remove unused files

This commit is contained in:
Holden
2024-02-16 04:48:59 -05:00
committed by Don Gagne
parent 27fbd6261a
commit b6a990dfda
67 changed files with 747 additions and 4297 deletions
-1
View File
@@ -1 +0,0 @@
--ignore-dir=doc
View File
-3
View File
@@ -1,3 +0,0 @@
# Running QGC on CentOS 7
This information has moved to the [QGroundControl Developer Guide](https://docs.qgroundcontrol.com/master/en/qgc-dev-guide/getting_started/cent_os.html)
+5
View File
@@ -2,6 +2,11 @@
Note: This file only contains high level features or important fixes.
# Major Updates In This Release
* New combined compass and attitude instrument
* You can select between multiple instruments by clicking on the instrument conntrol on a desktop build or press and hold on mobile builds
## 4.1 - Daily build
### 4.1.2 - Not yet released
-14
View File
@@ -1,14 +0,0 @@
# This system is for posting bugs or feature requests ONLY. Support questions will be automatically closed with no response.
# For questions about how to use or build QGC see: http://qgroundcontrol.com/#resources
----
# To post a bug report
When posting bug reports, include the following informaiton:
- Ground station operating system.
- QGroundControl version and build (daily, stable, self-built from source, etc.)
- **If you are using a Stable build which is not the latest, first step is to install latest Stable build and try again prior to entering a bug report.**
- Autopilot board: Pixhawk I, Pixhawk Mini, Pixhawk 2, etc.
- Autopilot firmware (e.g. PX4, ArduPilot, custom) and version.
- Exact steps to reproduce the problem. Starting from booting QGroundControl to when the problem occurs.
**All this template text should be deleted before creating your issue.**
-4
View File
@@ -1,4 +0,0 @@
# Major Updates In This Release
* New combined compass and attitude instrument
* You can select between multiple instruments by clicking on the instrument conntrol on a desktop build or press and hold on mobile builds
-29
View File
@@ -1,29 +0,0 @@
#!/bin/bash
#----------------------------------------------------------
# You will need:
# - Qt 5.5.x android_armv7 kit
# - Android SDK
# - Androig NDK
# - Current Java
# - ant
#----------------------------------------------------------
# Update with correct location for these
export ANDROID_HOME=~/Library/Android/sdk
export ANDROID_SDK_ROOT=~/Library/Android/sdk
export ANDROID_NDK_ROOT=~/Library/Android/sdk/ndk-bundle
export ANDROID_NDK_HOST=darwin-x86_64
export ANDROID_NDK_PLATFORM=/android-9
export ANDROID_NDK_TOOLCHAIN_PREFIX=arm-linux-androideabi
export ANDROID_NDK_TOOLCHAIN_VERSION=4.9
export ANDROID_NDK_TOOLS_PREFIX=arm-linux-androideabi
#----------------------------------------------------------
# To build it, run (replacing the path with where you have Qt installed)
#
# >source android_environment.sh
# cd ../
# mkdir android_build
# cd android_build
# >~/local/Qt/5.4/android_armv7/bin/qmake -r -spec android-g++ CONFIG+=debug ../qgroundcontrol/qgroundcontrol.pro
# >make -j24 install INSTALL_ROOT=./android-build/
# >~/local/Qt/5.4/android_armv7/bin/androiddeployqt --input ./android-libQGroundControl.so-deployment-settings.json --output ./android-build --deployment bundled --android-platform android-22 --jdk /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home --verbose --ant /usr/local/bin/ant
#
-1
View File
@@ -1 +0,0 @@
9
-13
View File
@@ -1,13 +0,0 @@
Source: qgroundcontrol
Section: electronics
Priority: optional
Maintainer: Daniel Agar <daniel@agar.ca>
Build-Depends: debhelper (>= 9), qt55tools, qt55base, qt55declarative, qt55serialport, qt55svg, qt55webkit, qt55quickcontrols, qt55xmlpatterns, qt55x11extras, qt55websockets, qt55sensors, qt55script, qt55quick1, qt55qbs, qt55multimedia, qt55location, qt55imageformats, qt55graphicaleffects, qt55creator, qt55connectivity, espeak, libespeak-dev, libudev-dev, libsdl1.2-dev
Standards-Version: 3.9.5
Homepage: https://github.com/mavlink/qgroundcontrol
Vcs-Git: git://github.com/mavlink/qgroundcontrol.git
Package: qgroundcontrol
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, espeak, libsdl1.2debian
Description: Open Source Micro Air Vehicle Ground Control Station
-7
View File
@@ -1,7 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: qgroundcontrol
Source: https://github.com/mavlink/qgroundcontrol
Files: *
Copyright: QGroundControl Developers https://github.com/mavlink/qgroundcontrol/graphs/contributors
License: GPL-3+
Vendored
-4
View File
@@ -1,4 +0,0 @@
?package(qgroundcontrol):needs="x11" \
section="Applications/Electronics" \
title="QGroundControl" \
command="/usr/bin/qgroundcontrol"
-4
View File
@@ -1,4 +0,0 @@
qgroundcontrol.desktop usr/share/applications
release/qgroundcontrol usr/bin
resources/ usr/share/qgroundcontrol
resources/icons/qgroundcontrol.png usr/share/pixmaps
-12
View File
@@ -1,12 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
export QT_SELECT := qt5
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
%:
dh $@
override_dh_auto_configure:
/opt/qt55/bin/qmake -r qgroundcontrol.pro CONFIG+=installer CONFIG+=WarningsAsErrorsOn
-1
View File
@@ -1 +0,0 @@
3.0 (quilt)
-1
View File
@@ -1 +0,0 @@
tar-ignore = ".git/*"
-2
View File
@@ -1,2 +0,0 @@
version=3
https://github.com/mavlink/qgroundcontrol/tags .*/archive/[a-z](\d\S*)\.tar\.gz

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 947 B

After

Width:  |  Height:  |  Size: 947 B

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

-3
View File
@@ -1,3 +0,0 @@
html
latex
*.tmp
-366
View File
@@ -1,366 +0,0 @@
# Doxyfile 1.8.17
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = QGroundControl
PROJECT_NUMBER =
PROJECT_BRIEF =
PROJECT_LOGO = ./qgroundcontrol.png
OUTPUT_DIRECTORY = .
CREATE_SUBDIRS = YES
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
OUTPUT_TEXT_DIRECTION = None
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = \
..
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
JAVADOC_BANNER = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
ALIASES = deprecated=@attention
TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
OPTIMIZE_OUTPUT_SLICE = NO
EXTENSION_MAPPING = qml=C++
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 5
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = YES
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_PRIV_VIRTUAL = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = NO
HIDE_COMPOUND_REFERENCE= NO
SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = NO
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = \
../src \
.
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.doc \
*.txt \
*.py \
*.qml
RECURSIVE = YES
EXCLUDE = ../src/PairingManager/NfcLibrary \
../src/PairingManager/NfcTask \
../src/PairingManager/TML \
../src/GPS/Drivers \
../src/GPS/RTCM \
../src/VideoStreaming/README.md
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = *Test.*
EXCLUDE_SYMBOLS = "UnitTest" "_*"
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS = *.qml=doxyqml
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = YES
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
#CLANG_ASSISTED_PARSING = NO
#CLANG_OPTIONS =
#CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = ./header.html
HTML_FOOTER =
HTML_STYLESHEET =
HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 269
HTML_COLORSTYLE_SAT = 60
HTML_COLORSTYLE_GAMMA = 100
HTML_TIMESTAMP = NO
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
DOCSET_PUBLISHER_NAME = Publisher
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
GENERATE_QHP = NO
QCH_FILE =
QHP_NAMESPACE = org.doxygen.Project
QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
QHG_LOCATION =
GENERATE_ECLIPSEHELP = NO
ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO
GENERATE_TREEVIEW = NO
ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
#FORMULA_MACROFILE =
USE_MATHJAX = NO
MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
MATHJAX_EXTENSIONS =
MATHJAX_CODEFILE =
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
EXTERNAL_SEARCH = NO
SEARCHENGINE_URL =
SEARCHDATA_FILE = searchdata.xml
EXTERNAL_SEARCH_ID =
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME =
MAKEINDEX_CMD_NAME = makeindex
LATEX_MAKEINDEX_CMD = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_FOOTER =
LATEX_EXTRA_STYLESHEET =
LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
RTF_SOURCE_CODE = NO
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_SUBDIR =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
DOCBOOK_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 8
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 50
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
DOT_PATH = .
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 200
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
-21
View File
@@ -1,21 +0,0 @@
Mac OS X
========
To install doxygen and dot:
brew install doxygen dot
doxyqml:
https://github.com/agateau/doxyqml
$sudo pip3 install doxyqml
Then to generate the html, run the following code while you are in the qgroundcontrol/doc directory:
$doxygen Doxyfile
The html file index.html should be in doc/html.
Debian
=====================
#To build documentation first install dependencies (doxygen, doxyqml and dot):
sudo apt install doxygen graphviz doxyqml
#Then build documentation in the doc/ directory
doxygen ./Doxyfile
-46
View File
@@ -1,46 +0,0 @@
#! /bin/bash
# This hack is a wrapper to GraphViz dot that removes any nodes that
# are contained in the following list.
LABELS_TO_FILTER="QObject Item"
ARGS=$@
for ARG in ${ARGS}
do
if [ -e ${ARG} ]
then
FILENAME=$(basename "${ARG}")
EXT="${FILENAME##*.}"
if [ ${EXT} == "dot" ]
then
DOT_FILE=${ARG}
for LABEL_TO_FILTER in ${LABELS_TO_FILTER}
do
NODE_NAME=$(grep "label=\"${LABEL_TO_FILTER}\"" ${DOT_FILE} | awk '{print $1}')
if [[ ! -z "${NODE_NAME}" ]]
then
echo "${NODE_NAME} is labelled ${LABEL_TO_FILTER}, filtering..."
sed -i -e "/${NODE_NAME}/d" ${DOT_FILE}
fi
done
break
fi
fi
done
if [[ -x "/usr/local/bin/dot" ]]
then
/usr/local/bin/dot ${ARGS}
elif [[ -x "/usr/bin/dot" ]]
then
/usr/bin/dot ${ARGS}
else
echo "Program dot not found: See file doc/dot"
exit 1
fi
Binary file not shown.
-56
View File
@@ -1,56 +0,0 @@
<!-- HTML header for doxygen 1.8.16-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo" style="width:64px;height:64px;"/></td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td id="projectalign" style="padding-left: 0.5em;">
<div style="font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px;">$projectname
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
<!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME-->
<!--BEGIN PROJECT_BRIEF-->
<td style="padding-left: 0.5em;">
<div id="projectbrief">$projectbrief</div>
</td>
<!--END PROJECT_BRIEF-->
<!--END !PROJECT_NAME-->
<!--BEGIN DISABLE_INDEX-->
<!--BEGIN SEARCHENGINE-->
<td>$searchbox</td>
<!--END SEARCHENGINE-->
<!--END DISABLE_INDEX-->
</tr>
</tbody>
</table>
</div>
<!--END TITLEAREA-->
<!-- end header part -->
-16
View File
@@ -1,16 +0,0 @@
# Link Management
The LinkManager creates, configures and maintains communication links. Links are created either through the user
interface or programmatically. The LinkConfiguration base classs defines the means to configure a given link
while the LinkInterface exposes the link itself.
Link specializations such as UDPLink, TCPLink, SerialLink, etc. are implemented in their own derived classes as well
as their equivalent configuration derivations such as UDPConfiguration, TCPConfiguration, SerialConfiguration, etc.
Links are primarily responsible to send and receive (MAVLink) data to and from a vehicle. When data arrives, the link will emit a
LinkInterface::bytesReceived signal and when data needs to be sent back to a vehicle, the code uses its
LinkInterface::writeBytesSafe method.
<div align="center">
<img src="../links.svg" style="width:80%; height=auto;">
</div>
-147
View File
@@ -1,147 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="39.94 147.94 656.5 346" width="656.5" height="346">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="39.94" y="147.94">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(342 153) rotate(90) scale(90)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(135 274.5) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(342 274.5) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(342 396) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient" gradientTransform="translate(135 396) rotate(90) scale(90)"/>
<font-face font-family="Helvetica Neue" font-size="12" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9691"/>
<stop offset=".45238096" stop-color="#eb7e79"/>
<stop offset="1" stop-color="#d56560"/>
</linearGradient>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient_2" gradientTransform="translate(471.00007 479.8125) rotate(-90) scale(27)"/>
<linearGradient x1="0" x2="1" id="Gradient_3" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#54ba6b"/>
<stop offset=".45238096" stop-color="#6dd98a"/>
<stop offset="1" stop-color="#84f8a8"/>
</linearGradient>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient_3" gradientTransform="translate(471.00007 402.1875) rotate(90) scale(27)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L -4 3 L 0 0 L -4 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L 0 3 L 0 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledDiamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 4 -3 L 0 0 L 4 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 19:58:23 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_2" filter="url(#Shadow)">
<path d="M 261 153 L 423 153 C 427.97056 153 432 157.02944 432 162 L 432 234 C 432 238.97056 427.97056 243 423 243 L 261 243 C 256.02944 243 252 238.97056 252 234 L 252 162 C 252 157.02944 256.02944 153 261 153 Z" fill="url(#Obj_Gradient)"/>
<path d="M 261 153 L 423 153 C 427.97056 153 432 157.02944 432 162 L 432 234 C 432 238.97056 427.97056 243 423 243 L 261 243 C 256.02944 243 252 238.97056 252 234 L 252 162 C 252 157.02944 256.02944 153 261 153 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 191)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="45.393555" y="11">LinkManager</tspan>
</text>
</g>
<g id="Graphic_6" filter="url(#Shadow)">
<path d="M 54 274.5 L 216 274.5 C 220.97056 274.5 225 278.52944 225 283.5 L 225 355.5 C 225 360.47056 220.97056 364.5 216 364.5 L 54 364.5 C 49.02944 364.5 45 360.47056 45 355.5 L 45 283.5 C 45 278.52944 49.02944 274.5 54 274.5 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 54 274.5 L 216 274.5 C 220.97056 274.5 225 278.52944 225 283.5 L 225 355.5 C 225 360.47056 220.97056 364.5 216 364.5 L 54 364.5 C 49.02944 364.5 45 360.47056 45 355.5 L 45 283.5 C 45 278.52944 49.02944 274.5 54 274.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(50 312.5)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="23.79004" y="11">LinkConfiguration</tspan>
</text>
</g>
<g id="Graphic_9" filter="url(#Shadow)">
<path d="M 261 274.5 L 423 274.5 C 427.97056 274.5 432 278.52944 432 283.5 L 432 355.5 C 432 360.47056 427.97056 364.5 423 364.5 L 261 364.5 C 256.02944 364.5 252 360.47056 252 355.5 L 252 283.5 C 252 278.52944 256.02944 274.5 261 274.5 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 261 274.5 L 423 274.5 C 427.97056 274.5 432 278.52944 432 283.5 L 432 355.5 C 432 360.47056 427.97056 364.5 423 364.5 L 261 364.5 C 256.02944 364.5 252 360.47056 252 355.5 L 252 283.5 C 252 278.52944 256.02944 274.5 261 274.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 312.5)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="11">LinkInterface</tspan>
</text>
</g>
<g id="Graphic_11" filter="url(#Shadow)">
<path d="M 261 396 L 423 396 C 427.97056 396 432 400.02944 432 405 L 432 477 C 432 481.97056 427.97056 486 423 486 L 261 486 C 256.02944 486 252 481.97056 252 477 L 252 405 C 252 400.02944 256.02944 396 261 396 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 261 396 L 423 396 C 427.97056 396 432 400.02944 432 405 L 432 477 C 432 481.97056 427.97056 486 423 486 L 261 486 C 256.02944 486 252 481.97056 252 477 L 252 405 C 252 400.02944 256.02944 396 261 396 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(257 434)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="59.7959" y="11">UDPLink</tspan>
</text>
</g>
<g id="Graphic_13" filter="url(#Shadow)">
<path d="M 54 396 L 216 396 C 220.97056 396 225 400.02944 225 405 L 225 477 C 225 481.97056 220.97056 486 216 486 L 54 486 C 49.02944 486 45 481.97056 45 477 L 45 405 C 45 400.02944 49.02944 396 54 396 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 54 396 L 216 396 C 220.97056 396 225 400.02944 225 405 L 225 477 C 225 481.97056 220.97056 486 216 486 L 54 486 C 49.02944 486 45 481.97056 45 477 L 45 405 C 45 400.02944 49.02944 396 54 396 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(50 434)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="27.390625" y="11">UDPConfiguration</tspan>
</text>
</g>
<g id="Group_50">
<g id="Graphic_14" filter="url(#Shadow)">
<path d="M 517.5 396.5625 L 679.5 396.5625 C 684.4706 396.5625 688.5 400.59194 688.5 405.5625 L 688.5 425.8125 C 688.5 430.78306 684.4706 434.8125 679.5 434.8125 L 517.5 434.8125 C 512.52944 434.8125 508.5 430.78306 508.5 425.8125 L 508.5 405.5625 C 508.5 400.59194 512.52944 396.5625 517.5 396.5625 Z" fill="#c0ffc0"/>
<path d="M 517.5 396.5625 L 679.5 396.5625 C 684.4706 396.5625 688.5 400.59194 688.5 405.5625 L 688.5 425.8125 C 688.5 430.78306 684.4706 434.8125 679.5 434.8125 L 517.5 434.8125 C 512.52944 434.8125 508.5 430.78306 508.5 425.8125 L 508.5 405.5625 C 508.5 400.59194 512.52944 396.5625 517.5 396.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(513.5 401.5195)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="25.336">bytesReceived</tspan>
</text>
</g>
<g id="Graphic_15" filter="url(#Shadow)">
<path d="M 517.5 447.1875 L 679.5 447.1875 C 684.4706 447.1875 688.5 451.21694 688.5 456.1875 L 688.5 476.4375 C 688.5 481.40806 684.4706 485.4375 679.5 485.4375 L 517.5 485.4375 C 512.52944 485.4375 508.5 481.40806 508.5 476.4375 L 508.5 456.1875 C 508.5 451.21694 512.52944 447.1875 517.5 447.1875 Z" fill="#ffc0c0"/>
<path d="M 517.5 447.1875 L 679.5 447.1875 C 684.4706 447.1875 688.5 451.21694 688.5 456.1875 L 688.5 476.4375 C 688.5 481.40806 684.4706 485.4375 679.5 485.4375 L 517.5 485.4375 C 512.52944 485.4375 508.5 481.40806 508.5 476.4375 L 508.5 456.1875 C 508.5 451.21694 512.52944 447.1875 517.5 447.1875 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(513.5 452.1445)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="64.324" y="11">Method</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="34.591797" y="25.336">writeBytesSafe</tspan>
</text>
</g>
<g id="Graphic_16" filter="url(#Shadow)">
<path d="M 498.75013 459.5625 L 498.75013 473.0625 L 463.25 473.0625 L 463.25 479.8125 L 443.25 466.3125 L 463.25 452.8125 L 463.25 459.5625 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 498.75013 459.5625 L 498.75013 473.0625 L 463.25 473.0625 L 463.25 479.8125 L 443.25 466.3125 L 463.25 452.8125 L 463.25 459.5625 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_17" filter="url(#Shadow)">
<path d="M 443.25 422.4375 L 443.25 408.9375 L 478.7501 408.9375 L 478.7501 402.1875 L 498.75013 415.6875 L 478.7501 429.1875 L 478.7501 422.4375 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 443.25 422.4375 L 443.25 408.9375 L 478.7501 408.9375 L 478.7501 402.1875 L 498.75013 415.6875 L 478.7501 429.1875 L 478.7501 422.4375 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_43">
<line x1="342" y1="252.25" x2="342" y2="274.5" marker-start="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_45">
<line x1="135" y1="374.4" x2="135" y2="396" marker-start="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_46">
<line x1="342" y1="374.4" x2="342" y2="396" marker-start="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_47">
<line x1="225" y1="441" x2="242.75" y2="441" marker-end="url(#FilledDiamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_49">
<line x1="225" y1="319.5" x2="242.75" y2="319.5" marker-end="url(#FilledDiamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

-192
View File
@@ -1,192 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="62.44 1241.44 625 427" width="625" height="427">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="62.44" y="1241.44">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(182.25 1608.75) rotate(90) scale(51.75)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(182.25 1434.375) rotate(90) scale(51.75)"/>
<font-face font-family="Helvetica Neue" font-size="10" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(130.5 1521.5625) rotate(90) scale(51.75)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(483.75 1434.375) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient" gradientTransform="translate(483.75 1608.75) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient" gradientTransform="translate(649.125 1345.5) rotate(90) scale(315)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 4 -3 L 0 0 L 4 3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient" gradientTransform="translate(483.75 1521.5625) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_8" xl:href="#Gradient" gradientTransform="translate(319.5 1521.5625) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_9" xl:href="#Gradient" gradientTransform="translate(483.75 1345.5) rotate(90) scale(51.75)"/>
<linearGradient id="Obj_Gradient_10" xl:href="#Gradient" gradientTransform="translate(319.5 1345.5) rotate(90) scale(51.75)"/>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 21:29:41 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_51" filter="url(#Shadow)">
<path d="M 128.25 1608.75 L 236.25 1608.75 C 241.22056 1608.75 245.25 1612.7794 245.25 1617.75 L 245.25 1651.5 C 245.25 1656.4706 241.22056 1660.5 236.25 1660.5 L 128.25 1660.5 C 123.27944 1660.5 119.25 1656.4706 119.25 1651.5 L 119.25 1617.75 C 119.25 1612.7794 123.27944 1608.75 128.25 1608.75 Z" fill="url(#Obj_Gradient)"/>
<path d="M 128.25 1608.75 L 236.25 1608.75 C 241.22056 1608.75 245.25 1612.7794 245.25 1617.75 L 245.25 1651.5 C 245.25 1656.4706 241.22056 1660.5 236.25 1660.5 L 128.25 1660.5 C 123.27944 1660.5 119.25 1656.4706 119.25 1651.5 L 119.25 1617.75 C 119.25 1612.7794 123.27944 1608.75 128.25 1608.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(124.25 1627.625)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="32.7959" y="11">Vehicle</tspan>
</text>
</g>
<g id="Graphic_52" filter="url(#Shadow)">
<path d="M 128.25 1434.375 L 236.25 1434.375 C 241.22056 1434.375 245.25 1438.4044 245.25 1443.375 L 245.25 1477.125 C 245.25 1482.0956 241.22056 1486.125 236.25 1486.125 L 128.25 1486.125 C 123.27944 1486.125 119.25 1482.0956 119.25 1477.125 L 119.25 1443.375 C 119.25 1438.4044 123.27944 1434.375 128.25 1434.375 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 128.25 1434.375 L 236.25 1434.375 C 241.22056 1434.375 245.25 1438.4044 245.25 1443.375 L 245.25 1477.125 C 245.25 1482.0956 241.22056 1486.125 236.25 1486.125 L 128.25 1486.125 C 123.27944 1486.125 119.25 1482.0956 119.25 1477.125 L 119.25 1443.375 C 119.25 1438.4044 123.27944 1434.375 128.25 1434.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(124.25 1453.25)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="11.192383" y="11">LinkInterface</tspan>
</text>
</g>
<g id="Graphic_54" filter="url(#Shadow)">
<circle cx="182.25" cy="1279.125" r="32.6250521315494" fill="#a2fba2"/>
<circle cx="182.25" cy="1279.125" r="32.6250521315494" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(154.625 1264.845)" fill="black">
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="5.585" y="12">Telemetry</tspan>
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="18.36" y="26.28">Link</tspan>
</text>
</g>
<g id="Graphic_55" filter="url(#Shadow)">
<path d="M 76.5 1521.5625 L 184.5 1521.5625 C 189.47056 1521.5625 193.5 1525.592 193.5 1530.5625 L 193.5 1564.3125 C 193.5 1569.283 189.47056 1573.3125 184.5 1573.3125 L 76.5 1573.3125 C 71.52944 1573.3125 67.5 1569.283 67.5 1564.3125 L 67.5 1530.5625 C 67.5 1525.592 71.52944 1521.5625 76.5 1521.5625 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 76.5 1521.5625 L 184.5 1521.5625 C 189.47056 1521.5625 193.5 1525.592 193.5 1530.5625 L 193.5 1564.3125 C 193.5 1569.283 189.47056 1573.3125 184.5 1573.3125 L 76.5 1573.3125 C 71.52944 1573.3125 67.5 1569.283 67.5 1564.3125 L 67.5 1530.5625 C 67.5 1525.592 71.52944 1521.5625 76.5 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(72.5 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="3.991211" y="11">MAVLinkProtocol</tspan>
</text>
</g>
<g id="Line_56">
<line x1="182.25" y1="1321.65" x2="182.25" y2="1424.475" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_57">
<line x1="150.75" y1="1486.125" x2="135.41178" y2="1512.9669" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_58">
<line x1="130.5" y1="1573.3125" x2="145.83822" y2="1600.1544" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_59">
<line x1="213.75" y1="1608.75" x2="213.75" y2="1496.025" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_61" filter="url(#Shadow)">
<path d="M 411.75 1434.375 L 555.75 1434.375 C 560.72056 1434.375 564.75 1438.4044 564.75 1443.375 L 564.75 1477.125 C 564.75 1482.0956 560.72056 1486.125 555.75 1486.125 L 411.75 1486.125 C 406.77944 1486.125 402.75 1482.0956 402.75 1477.125 L 402.75 1443.375 C 402.75 1438.4044 406.77944 1434.375 411.75 1434.375 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 411.75 1434.375 L 555.75 1434.375 C 560.72056 1434.375 564.75 1438.4044 564.75 1443.375 L 564.75 1477.125 C 564.75 1482.0956 560.72056 1486.125 555.75 1486.125 L 411.75 1486.125 C 406.77944 1486.125 402.75 1482.0956 402.75 1477.125 L 402.75 1443.375 C 402.75 1438.4044 406.77944 1434.375 411.75 1434.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1453.25)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="36.393555" y="11">LinkManager</tspan>
</text>
</g>
<g id="Graphic_62" filter="url(#Shadow)">
<path d="M 411.75 1608.75 L 555.75 1608.75 C 560.72056 1608.75 564.75 1612.7794 564.75 1617.75 L 564.75 1651.5 C 564.75 1656.4706 560.72056 1660.5 555.75 1660.5 L 411.75 1660.5 C 406.77944 1660.5 402.75 1656.4706 402.75 1651.5 L 402.75 1617.75 C 402.75 1612.7794 406.77944 1608.75 411.75 1608.75 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 411.75 1608.75 L 555.75 1608.75 C 560.72056 1608.75 564.75 1612.7794 564.75 1617.75 L 564.75 1651.5 C 564.75 1656.4706 560.72056 1660.5 555.75 1660.5 L 411.75 1660.5 C 406.77944 1660.5 402.75 1656.4706 402.75 1651.5 L 402.75 1617.75 C 402.75 1612.7794 406.77944 1608.75 411.75 1608.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1627.625)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="7.588867" y="11">MultiVehicleManager</tspan>
</text>
</g>
<g id="Graphic_63" filter="url(#Shadow)">
<path d="M 627.75 1345.5 L 670.5 1345.5 C 675.4706 1345.5 679.5 1349.5294 679.5 1354.5 L 679.5 1651.5 C 679.5 1656.4706 675.4706 1660.5 670.5 1660.5 L 627.75 1660.5 C 622.77944 1660.5 618.75 1656.4706 618.75 1651.5 L 618.75 1354.5 C 618.75 1349.5294 622.77944 1345.5 627.75 1345.5 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 627.75 1345.5 L 670.5 1345.5 C 675.4706 1345.5 679.5 1349.5294 679.5 1354.5 L 679.5 1651.5 C 679.5 1656.4706 675.4706 1660.5 670.5 1660.5 L 627.75 1660.5 C 622.77944 1660.5 618.75 1656.4706 618.75 1651.5 L 618.75 1354.5 C 618.75 1349.5294 622.77944 1345.5 627.75 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(623.75 1496)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="18.173828" y="11">UI</tspan>
</text>
</g>
<g id="Line_64">
<line x1="245.25" y1="1460.25" x2="393.5" y2="1460.25" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_65">
<line x1="245.25" y1="1634.625" x2="393.5" y2="1634.625" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_66">
<line x1="574.4419" y1="1462.2691" x2="609.0581" y2="1469.4809" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_67">
<line x1="572.908" y1="1629.0164" x2="610.592" y2="1603.1086" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_68" filter="url(#Shadow)">
<path d="M 411.75 1521.5625 L 555.75 1521.5625 C 560.72056 1521.5625 564.75 1525.592 564.75 1530.5625 L 564.75 1564.3125 C 564.75 1569.283 560.72056 1573.3125 555.75 1573.3125 L 411.75 1573.3125 C 406.77944 1573.3125 402.75 1569.283 402.75 1564.3125 L 402.75 1530.5625 C 402.75 1525.592 406.77944 1521.5625 411.75 1521.5625 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 411.75 1521.5625 L 555.75 1521.5625 C 560.72056 1521.5625 564.75 1525.592 564.75 1530.5625 L 564.75 1564.3125 C 564.75 1569.283 560.72056 1573.3125 555.75 1573.3125 L 411.75 1573.3125 C 406.77944 1573.3125 402.75 1569.283 402.75 1564.3125 L 402.75 1530.5625 C 402.75 1525.592 406.77944 1521.5625 411.75 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="18.390625" y="11">QGCCameraManager</tspan>
</text>
</g>
<g id="Graphic_69" filter="url(#Shadow)">
<path d="M 265.5 1521.5625 L 373.5 1521.5625 C 378.47056 1521.5625 382.5 1525.592 382.5 1530.5625 L 382.5 1564.3125 C 382.5 1569.283 378.47056 1573.3125 373.5 1573.3125 L 265.5 1573.3125 C 260.52944 1573.3125 256.5 1569.283 256.5 1564.3125 L 256.5 1530.5625 C 256.5 1525.592 260.52944 1521.5625 265.5 1521.5625 Z" fill="url(#Obj_Gradient_8)"/>
<path d="M 265.5 1521.5625 L 373.5 1521.5625 C 378.47056 1521.5625 382.5 1525.592 382.5 1530.5625 L 382.5 1564.3125 C 382.5 1569.283 378.47056 1573.3125 373.5 1573.3125 L 265.5 1573.3125 C 260.52944 1573.3125 256.5 1569.283 256.5 1564.3125 L 256.5 1530.5625 C 256.5 1525.592 260.52944 1521.5625 265.5 1521.5625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(261.5 1540.4375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x=".390625" y="11">QGCCameraControl</tspan>
</text>
</g>
<g id="Line_70">
<line x1="382.5" y1="1547.4375" x2="393.5" y2="1547.4375" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_71">
<line x1="319.5" y1="1573.3125" x2="253.00023" y2="1616.6381" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_72">
<line x1="574.37754" y1="1545.1309" x2="609.12246" y2="1536.8066" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_75" filter="url(#Shadow)">
<path d="M 411.75 1345.5 L 555.75 1345.5 C 560.72056 1345.5 564.75 1349.5294 564.75 1354.5 L 564.75 1388.25 C 564.75 1393.2206 560.72056 1397.25 555.75 1397.25 L 411.75 1397.25 C 406.77944 1397.25 402.75 1393.2206 402.75 1388.25 L 402.75 1354.5 C 402.75 1349.5294 406.77944 1345.5 411.75 1345.5 Z" fill="url(#Obj_Gradient_9)"/>
<path d="M 411.75 1345.5 L 555.75 1345.5 C 560.72056 1345.5 564.75 1349.5294 564.75 1354.5 L 564.75 1388.25 C 564.75 1393.2206 560.72056 1397.25 555.75 1397.25 L 411.75 1397.25 C 406.77944 1397.25 402.75 1393.2206 402.75 1388.25 L 402.75 1354.5 C 402.75 1349.5294 406.77944 1345.5 411.75 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(407.75 1364.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="32.79297" y="11">VideoManager</tspan>
</text>
</g>
<g id="Graphic_74" filter="url(#Shadow)">
<path d="M 265.5 1345.5 L 373.5 1345.5 C 378.47056 1345.5 382.5 1349.5294 382.5 1354.5 L 382.5 1388.25 C 382.5 1393.2206 378.47056 1397.25 373.5 1397.25 L 265.5 1397.25 C 260.52944 1397.25 256.5 1393.2206 256.5 1388.25 L 256.5 1354.5 C 256.5 1349.5294 260.52944 1345.5 265.5 1345.5 Z" fill="url(#Obj_Gradient_10)"/>
<path d="M 265.5 1345.5 L 373.5 1345.5 C 378.47056 1345.5 382.5 1349.5294 382.5 1354.5 L 382.5 1388.25 C 382.5 1393.2206 378.47056 1397.25 373.5 1397.25 L 265.5 1397.25 C 260.52944 1397.25 256.5 1393.2206 256.5 1388.25 L 256.5 1354.5 C 256.5 1349.5294 260.52944 1345.5 265.5 1345.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(261.5 1364.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="11.192383" y="11">VideoReceiver</tspan>
</text>
</g>
<g id="Line_73">
<line x1="382.5" y1="1371.375" x2="393.5" y2="1371.375" marker-end="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_76" filter="url(#Shadow)">
<circle cx="319.5" cy="1279.125" r="32.6250521315494" fill="#a2fba2"/>
<circle cx="319.5" cy="1279.125" r="32.6250521315494" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(291.875 1264.845)" fill="black">
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="14.94" y="12">Video</tspan>
<tspan font-family="Helvetica Neue" font-size="10" font-weight="400" fill="black" x="18.36" y="26.28">Link</tspan>
</text>
</g>
<g id="Line_77">
<line x1="319.5" y1="1311.75" x2="319.5" y2="1335.6" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_78">
<line x1="572.908" y1="1376.9836" x2="610.592" y2="1402.8914" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 19 KiB

-11
View File
@@ -1,11 +0,0 @@
QGroundControl Architecture Documentation {#mainpage}
=========================================
#### High Level Diagram
<div align="center">
<img src="../qgcmain.svg" style="width:80%; height=auto;">
</div>
* [Link Management](links.md)
* [Vehicle Management](vehicleMgmt.md)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

-14
View File
@@ -1,14 +0,0 @@
# Vehicle Management
The singleton MAVLinkProtocol implements the target slot for all LinkInterface::bytesReceived signals. As data is received, it parses and builds MAVLink messages.
All messages are then sent through a MAVLinkProcotol::messageReceived signal. In addition, when it detects a heartbeat message,
it emits MAVLinkProcotol::vehicleHeartbeatInfo signals.
The singleton MultiVehicleManager is responsible for creating and maintaining instances of the Vehicle class. When it receives a MAVLinkProcotol::vehicleHeartbeatInfo
signal for the first time, it creates a vehicle instance, recording the vehicle ID and the link used.
The Vehicle class holds all the functionality to handle vehicles. It receives all messages sent from the vehicle and manages all messages and commands to that vehicle.
<div align="center">
<img src="../vehicleMgmt.svg" style="width:80%; height=auto;">
</div>
-159
View File
@@ -1,159 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="-2.81 667.69 720.2501 425" width="720.2501" height="425">
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse" x="-2.81" y="667.69">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="2.616"/>
<feOffset in="blur" result="offset" dx="1.44" dy="1.44"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in" result="color"/>
<feMerge>
<feMergeNode in="color"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#eee"/>
<stop offset="1" stop-color="#afafaf"/>
</linearGradient>
<linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(358.50003 672.75) rotate(90) scale(90)"/>
<font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.61719" slope="0" x-height="456.54297" cap-height="586.91406" ascent="753.90625" descent="-246.09375" font-weight="400">
<font-face-src>
<font-face-name name="Courier"/>
</font-face-src>
</font-face>
<font-face font-family="Helvetica Neue" font-size="12" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
<font-face-src>
<font-face-name name="HelveticaNeue"/>
</font-face-src>
</font-face>
<linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9691"/>
<stop offset=".45238096" stop-color="#eb7e79"/>
<stop offset="1" stop-color="#d56560"/>
</linearGradient>
<linearGradient id="Obj_Gradient_2" xl:href="#Gradient_2" gradientTransform="translate(225.75007 731.25) rotate(-90) scale(27)"/>
<linearGradient x1="0" x2="1" id="Gradient_3" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#54ba6b"/>
<stop offset=".45238096" stop-color="#6dd98a"/>
<stop offset="1" stop-color="#84f8a8"/>
</linearGradient>
<linearGradient id="Obj_Gradient_3" xl:href="#Gradient_3" gradientTransform="translate(489.00007 678.375) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(358.50003 831.375) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_5" xl:href="#Gradient_3" gradientTransform="translate(489.00007 730.125) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_6" xl:href="#Gradient_2" gradientTransform="translate(221.99993 862.875) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_7" xl:href="#Gradient" gradientTransform="translate(358.50003 994.75) rotate(90) scale(90)"/>
<linearGradient id="Obj_Gradient_8" xl:href="#Gradient_2" gradientTransform="translate(221.99993 1026.25) rotate(90) scale(27)"/>
<linearGradient id="Obj_Gradient_9" xl:href="#Gradient_3" gradientTransform="translate(489.00007 1026.25) rotate(90) scale(27)"/>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Diamond_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M -8 0 L -4 3 L 0 0 L -4 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<metadata> Produced by OmniGraffle 7.12.1
<dc:date>2020-02-02 20:02:31 +0000</dc:date>
</metadata>
<g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
<title>Canvas 1</title>
<g id="Canvas_1: Layer 1">
<title>Layer 1</title>
<g id="Graphic_20" filter="url(#Shadow)">
<path d="M 277.50003 672.75 L 439.50003 672.75 C 444.4706 672.75 448.50003 676.7794 448.50003 681.75 L 448.50003 753.75 C 448.50003 758.7206 444.4706 762.75 439.50003 762.75 L 277.50003 762.75 C 272.52947 762.75 268.50003 758.7206 268.50003 753.75 L 268.50003 681.75 C 268.50003 676.7794 272.52947 672.75 277.50003 672.75 Z" fill="url(#Obj_Gradient)"/>
<path d="M 277.50003 672.75 L 439.50003 672.75 C 444.4706 672.75 448.50003 676.7794 448.50003 681.75 L 448.50003 753.75 C 448.50003 758.7206 444.4706 762.75 439.50003 762.75 L 277.50003 762.75 C 272.52947 762.75 268.50003 758.7206 268.50003 753.75 L 268.50003 681.75 C 268.50003 676.7794 272.52947 672.75 277.50003 672.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 710.75)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="11">MAVLinkProtocol</tspan>
</text>
</g>
<g id="Graphic_22" filter="url(#Shadow)">
<path d="M 11.25 697.5 L 173.25 697.5 C 178.22056 697.5 182.25 701.5294 182.25 706.5 L 182.25 726.75 C 182.25 731.7206 178.22056 735.75 173.25 735.75 L 11.25 735.75 C 6.279437 735.75 2.25 731.7206 2.25 726.75 L 2.25 706.5 C 2.25 701.5294 6.279437 697.5 11.25 697.5 Z" fill="#ffc0c0"/>
<path d="M 11.25 697.5 L 173.25 697.5 C 178.22056 697.5 182.25 701.5294 182.25 706.5 L 182.25 726.75 C 182.25 731.7206 178.22056 735.75 173.25 735.75 L 11.25 735.75 C 6.279437 735.75 2.25 731.7206 2.25 726.75 L 2.25 706.5 C 2.25 701.5294 6.279437 697.5 11.25 697.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 702.457)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="38.192383" y="25.336">bytesReceived</tspan>
</text>
</g>
<g id="Graphic_21" filter="url(#Shadow)">
<path d="M 198 711 L 198 724.5 L 233.50013 724.5 L 233.50013 731.25 L 253.50013 717.75 L 233.50013 704.25 L 233.50013 711 Z" fill="url(#Obj_Gradient_2)"/>
<path d="M 198 711 L 198 724.5 L 233.50013 724.5 L 233.50013 731.25 L 253.50013 717.75 L 233.50013 704.25 L 233.50013 711 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_24" filter="url(#Shadow)">
<path d="M 537.75 672.75 L 699.75 672.75 C 704.7206 672.75 708.75 676.7794 708.75 681.75 L 708.75 702 C 708.75 706.9706 704.7206 711 699.75 711 L 537.75 711 C 532.77944 711 528.75 706.9706 528.75 702 L 528.75 681.75 C 528.75 676.7794 532.77944 672.75 537.75 672.75 Z" fill="#c0ffc0"/>
<path d="M 537.75 672.75 L 699.75 672.75 C 704.7206 672.75 708.75 676.7794 708.75 681.75 L 708.75 702 C 708.75 706.9706 704.7206 711 699.75 711 L 537.75 711 C 532.77944 711 528.75 706.9706 528.75 702 L 528.75 681.75 C 528.75 676.7794 532.77944 672.75 537.75 672.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(533.75 677.707)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="12.988281" y="25.336">vehicleHeartbeatInfo</tspan>
</text>
</g>
<g id="Graphic_23" filter="url(#Shadow)">
<path d="M 461.25 698.625 L 461.25 685.125 L 496.7501 685.125 L 496.7501 678.375 L 516.7501 691.875 L 496.7501 705.375 L 496.7501 698.625 Z" fill="url(#Obj_Gradient_3)"/>
<path d="M 461.25 698.625 L 461.25 685.125 L 496.7501 685.125 L 496.7501 678.375 L 516.7501 691.875 L 496.7501 705.375 L 496.7501 698.625 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_28" filter="url(#Shadow)">
<path d="M 277.50003 831.375 L 439.50003 831.375 C 444.4706 831.375 448.50003 835.4044 448.50003 840.375 L 448.50003 912.375 C 448.50003 917.3456 444.4706 921.375 439.50003 921.375 L 277.50003 921.375 C 272.52947 921.375 268.50003 917.3456 268.50003 912.375 L 268.50003 840.375 C 268.50003 835.4044 272.52947 831.375 277.50003 831.375 Z" fill="url(#Obj_Gradient_4)"/>
<path d="M 277.50003 831.375 L 439.50003 831.375 C 444.4706 831.375 448.50003 835.4044 448.50003 840.375 L 448.50003 912.375 C 448.50003 917.3456 444.4706 921.375 439.50003 921.375 L 277.50003 921.375 C 272.52947 921.375 268.50003 917.3456 268.50003 912.375 L 268.50003 840.375 C 268.50003 835.4044 272.52947 831.375 277.50003 831.375 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 869.375)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="16.588867" y="11">MultiVehicleManager</tspan>
</text>
</g>
<g id="Graphic_30" filter="url(#Shadow)">
<path d="M 537.75 724.5 L 699.75 724.5 C 704.7206 724.5 708.75 728.5294 708.75 733.5 L 708.75 753.75 C 708.75 758.7206 704.7206 762.75 699.75 762.75 L 537.75 762.75 C 532.77944 762.75 528.75 758.7206 528.75 753.75 L 528.75 733.5 C 528.75 728.5294 532.77944 724.5 537.75 724.5 Z" fill="#c0ffc0"/>
<path d="M 537.75 724.5 L 699.75 724.5 C 704.7206 724.5 708.75 728.5294 708.75 733.5 L 708.75 753.75 C 708.75 758.7206 704.7206 762.75 699.75 762.75 L 537.75 762.75 C 532.77944 762.75 528.75 758.7206 528.75 753.75 L 528.75 733.5 C 528.75 728.5294 532.77944 724.5 537.75 724.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(533.75 729.457)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="68.446" y="11">Signal</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="25.336">messageReceived</tspan>
</text>
</g>
<g id="Graphic_29" filter="url(#Shadow)">
<path d="M 461.25 750.375 L 461.25 736.875 L 496.7501 736.875 L 496.7501 730.125 L 516.7501 743.625 L 496.7501 757.125 L 496.7501 750.375 Z" fill="url(#Obj_Gradient_5)"/>
<path d="M 461.25 750.375 L 461.25 736.875 L 496.7501 736.875 L 496.7501 730.125 L 516.7501 743.625 L 496.7501 757.125 L 496.7501 750.375 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_32" filter="url(#Shadow)">
<path d="M 11.25 857.25 L 173.25 857.25 C 178.22056 857.25 182.25 861.2794 182.25 866.25 L 182.25 886.5 C 182.25 891.4706 178.22056 895.5 173.25 895.5 L 11.25 895.5 C 6.279437 895.5 2.25 891.4706 2.25 886.5 L 2.25 866.25 C 2.25 861.2794 6.279437 857.25 11.25 857.25 Z" fill="#ffc0c0"/>
<path d="M 11.25 857.25 L 173.25 857.25 C 178.22056 857.25 182.25 861.2794 182.25 866.25 L 182.25 886.5 C 182.25 891.4706 178.22056 895.5 173.25 895.5 L 11.25 895.5 C 6.279437 895.5 2.25 891.4706 2.25 886.5 L 2.25 866.25 C 2.25 861.2794 6.279437 857.25 11.25 857.25 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 862.207)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="12.988281" y="25.336">vehicleHeartbeatInfo</tspan>
</text>
</g>
<g id="Graphic_31" filter="url(#Shadow)">
<path d="M 194.24987 883.125 L 194.24987 869.625 L 229.75 869.625 L 229.75 862.875 L 249.75 876.375 L 229.75 889.875 L 229.75 883.125 Z" fill="url(#Obj_Gradient_6)"/>
<path d="M 194.24987 883.125 L 194.24987 869.625 L 229.75 869.625 L 229.75 862.875 L 249.75 876.375 L 229.75 889.875 L 229.75 883.125 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_34" filter="url(#Shadow)">
<path d="M 277.50003 994.75 L 439.50003 994.75 C 444.4706 994.75 448.50003 998.7794 448.50003 1003.75 L 448.50003 1075.75 C 448.50003 1080.7206 444.4706 1084.75 439.50003 1084.75 L 277.50003 1084.75 C 272.52947 1084.75 268.50003 1080.7206 268.50003 1075.75 L 268.50003 1003.75 C 268.50003 998.7794 272.52947 994.75 277.50003 994.75 Z" fill="url(#Obj_Gradient_7)"/>
<path d="M 277.50003 994.75 L 439.50003 994.75 C 444.4706 994.75 448.50003 998.7794 448.50003 1003.75 L 448.50003 1075.75 C 448.50003 1080.7206 444.4706 1084.75 439.50003 1084.75 L 277.50003 1084.75 C 272.52947 1084.75 268.50003 1080.7206 268.50003 1075.75 L 268.50003 1003.75 C 268.50003 998.7794 272.52947 994.75 277.50003 994.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(273.50003 1032.75)" fill="black">
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="59.7959" y="11">Vehicle</tspan>
</text>
</g>
<g id="Graphic_36" filter="url(#Shadow)">
<path d="M 11.25 1020.625 L 173.25 1020.625 C 178.22056 1020.625 182.25 1024.6544 182.25 1029.625 L 182.25 1049.875 C 182.25 1054.8456 178.22056 1058.875 173.25 1058.875 L 11.25 1058.875 C 6.279437 1058.875 2.25 1054.8456 2.25 1049.875 L 2.25 1029.625 C 2.25 1024.6544 6.279437 1020.625 11.25 1020.625 Z" fill="#ffc0c0"/>
<path d="M 11.25 1020.625 L 173.25 1020.625 C 178.22056 1020.625 182.25 1024.6544 182.25 1029.625 L 182.25 1049.875 C 182.25 1054.8456 178.22056 1058.875 173.25 1058.875 L 11.25 1058.875 C 6.279437 1058.875 2.25 1054.8456 2.25 1049.875 L 2.25 1029.625 C 2.25 1024.6544 6.279437 1020.625 11.25 1020.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(7.25 1025.582)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.446" y="11">Slot</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="30.99121" y="25.336">messageReceived</tspan>
</text>
</g>
<g id="Graphic_35" filter="url(#Shadow)">
<path d="M 194.24987 1046.5 L 194.24987 1033 L 229.75 1033 L 229.75 1026.25 L 249.75 1039.75 L 229.75 1053.25 L 229.75 1046.5 Z" fill="url(#Obj_Gradient_8)"/>
<path d="M 194.24987 1046.5 L 194.24987 1033 L 229.75 1033 L 229.75 1026.25 L 249.75 1039.75 L 229.75 1053.25 L 229.75 1046.5 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_38" filter="url(#Shadow)">
<path d="M 538.5001 1020.625 L 700.5001 1020.625 C 705.47064 1020.625 709.5001 1024.6544 709.5001 1029.625 L 709.5001 1049.875 C 709.5001 1054.8456 705.47064 1058.875 700.5001 1058.875 L 538.5001 1058.875 C 533.5295 1058.875 529.5001 1054.8456 529.5001 1049.875 L 529.5001 1029.625 C 529.5001 1024.6544 533.5295 1020.625 538.5001 1020.625 Z" fill="#c0ffc0"/>
<path d="M 538.5001 1020.625 L 700.5001 1020.625 C 705.47064 1020.625 709.5001 1024.6544 709.5001 1029.625 L 709.5001 1049.875 C 709.5001 1054.8456 705.47064 1058.875 700.5001 1058.875 L 538.5001 1058.875 C 533.5295 1058.875 529.5001 1054.8456 529.5001 1049.875 L 529.5001 1029.625 C 529.5001 1024.6544 533.5295 1020.625 538.5001 1020.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(534.5001 1025.582)" fill="black">
<tspan font-family="Helvetica Neue" font-size="12" font-weight="400" fill="black" x="74.782" y="11">Call</tspan>
<tspan font-family="Courier" font-size="12" font-weight="400" fill="black" x="34.591797" y="25.336">writeBytesSafe</tspan>
</text>
</g>
<g id="Graphic_39" filter="url(#Shadow)">
<path d="M 461.25 1046.5 L 461.25 1033 L 496.7501 1033 L 496.7501 1026.25 L 516.7501 1039.75 L 496.7501 1053.25 L 496.7501 1046.5 Z" fill="url(#Obj_Gradient_9)"/>
<path d="M 461.25 1046.5 L 461.25 1033 L 496.7501 1033 L 496.7501 1026.25 L 516.7501 1039.75 L 496.7501 1053.25 L 496.7501 1046.5 Z" stroke="#c01b00" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_48">
<line x1="358.50003" y1="930.625" x2="358.50003" y2="994.75" marker-start="url(#Diamond_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

-2
View File
@@ -4,8 +4,6 @@ add_library(sdl2 SHARED IMPORTED GLOBAL)
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64 bits
set(SDL2_LIB_BASE_PATH ${SDL2_LIB_BASE_PATH}/x64)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # 32 bits
set(SDL2_LIB_BASE_PATH ${SDL2_LIB_BASE_PATH}/x86)
endif()
target_link_libraries(sdl2 INTERFACE ${SDL2_LIB_BASE_PATH}/SDL2.lib)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-77
View File
@@ -1,77 +0,0 @@
#!/bin/bash
QSERIAL_TAG=004e3de552fe25fee593dfcb03e2ffa82cb0b152
MAVLINK_VERSION=1.0.6
libList="mavlink qserialport"
topDir=$PWD
function fetch_git
{
name=$1
url=$2
tag=$4
echo
echo updating: $name @ $url to tag $tag
cd $topDir
rm -rf $name
git clone $url
cd $name && git checkout $tag && rm -rf .git
cd $topDir
}
function processLib
{
lib=$1
case $lib in
"qserialport")
fetch_git qserialport git://gitorious.org/inbiza-labs/qserialport.git master $QSERIAL_TAG
;;
"mavlink")
cd $topDir/mavlink
rm -rf VERSION mavlink* include lib share *.zip
wget https://github.com/downloads/mavlink/mavlink/mavlink-${MAVLINK_VERSION}.zip
unzip mavlink-${MAVLINK_VERSION}.zip
mv mavlink-${MAVLINK_VERSION}/* .
rm -rf mavlink*
echo $MAVLINK_VERSION > VERSION
cd $topDir
;;
"all")
for lib in $libList
do
$0 $lib
done
exit 0
;;
"exit")
exit 0
;;
*)
echo unknown lib, possiblities are: $libList
exit 1
esac
REPLY=
}
if [ $# == 0 ]
then
#menu
echo This script grabs upstream releases.
PS3='Please enter your choice: '
select OPT in $libList all exit
do
processLib $OPT
done
elif [ $# == 1 ]
then
lib=$1
processLib $lib
else
echo usage: $0 lib
fi
+7 -7
View File
@@ -129,20 +129,20 @@ iOSBuild {
ForAppStore {
message(App Store Build)
#-- Create official, versioned Info.plist
APP_STORE = $$system(cd $${SOURCE_DIR} && $${SOURCE_DIR}/tools/update_ios_version.sh $${SOURCE_DIR}/ios/iOSForAppStore-Info-Source.plist $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist)
APP_STORE = $$system(cd $${SOURCE_DIR} && $${SOURCE_DIR}/tools/update_ios_version.sh $${SOURCE_DIR}/deploy/ios/iOSForAppStore-Info-Source.plist $${SOURCE_DIR}/ios/deploy/iOSForAppStore-Info.plist)
APP_ERROR = $$find(APP_STORE, "Error")
count(APP_ERROR, 1) {
error("Error building .plist file. 'ForAppStore' builds are only possible through the official build system.")
}
QT += qml-private
QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist
OTHER_FILES += $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist
QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/deploy/iOSForAppStore-Info.plist
OTHER_FILES += $${SOURCE_DIR}/ios/deploy/iOSForAppStore-Info.plist
} else {
QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/iOS-Info.plist
OTHER_FILES += $${SOURCE_DIR}/ios/iOS-Info.plist
QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/deploy/iOS-Info.plist
OTHER_FILES += $${SOURCE_DIR}/ios/deploy/iOS-Info.plist
}
QMAKE_ASSET_CATALOGS += ios/Images.xcassets
BUNDLE.files = ios/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST
QMAKE_ASSET_CATALOGS += ios/deploy/Images.xcassets
BUNDLE.files = ios/deploy/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST
QMAKE_BUNDLE_DATA += BUNDLE
}
}
-730
View File
@@ -1,730 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt VS Tools.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************
-->
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="QPoint">
<AlternativeType Name="QPointF"/>
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name="QRect">
<DisplayString>{{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}</DisplayString>
<Expand>
<Item Name="[x]">x1</Item>
<Item Name="[y]">y1</Item>
<Item Name="[width]">x2 - x1 + 1</Item>
<Item Name="[height]">y2 - y1 + 1</Item>
</Expand>
</Type>
<Type Name="QRectF">
<DisplayString>{{ x = {xp}, y = {yp}, width = {w}, height = {h} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[width]">w</Item>
<Item Name="[height]">h</Item>
</Expand>
</Type>
<Type Name="QSize">
<AlternativeType Name="QSizeF"/>
<DisplayString>{{ width = {wd}, height = {ht} }}</DisplayString>
<Expand>
<Item Name="[width]">wd</Item>
<Item Name="[height]">ht</Item>
</Expand>
</Type>
<Type Name="QLine">
<AlternativeType Name="QLineF"/>
<DisplayString>{{ start point = {pt1}, end point = {pt2} }}</DisplayString>
<Expand>
<Synthetic Name="[start point]">
<DisplayString>{pt1}</DisplayString>
<Expand>
<ExpandedItem>pt1</ExpandedItem>
</Expand>
</Synthetic>
<Synthetic Name="[end point]">
<DisplayString>{pt2}</DisplayString>
<Expand>
<ExpandedItem>pt2</ExpandedItem>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="QPolygon">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPoint*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QPolygonF">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[closed]">
d-&gt;size &gt; 0
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).xp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).xp)
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).yp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).yp)
</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name ="QVector2D">
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name ="QVector3D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
</Expand>
</Type>
<Type Name ="QVector4D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
<Item Name="[w]">wp</Item>
</Expand>
</Type>
<Type Name ="QMatrix">
<DisplayString>
{{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">_m11</Item>
<Item Name="[m12]">_m12</Item>
<Item Name="[m21]">_m21</Item>
<Item Name="[m22]">_m22</Item>
<Item Name="[dx]">_dx</Item>
<Item Name="[dy]">_dy</Item>
</Expand>
</Type>
<Type Name ="QMatrix4x4">
<DisplayString>
{{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">m[0][0]</Item>
<Item Name="[m12]">m[1][0]</Item>
<Item Name="[m13]">m[2][0]</Item>
<Item Name="[m14]">m[3][0]</Item>
<Item Name="[m21]">m[0][1]</Item>
<Item Name="[m22]">m[1][1]</Item>
<Item Name="[m23]">m[2][1]</Item>
<Item Name="[m24]">m[3][1]</Item>
<Item Name="[m31]">m[0][2]</Item>
<Item Name="[m32]">m[1][2]</Item>
<Item Name="[m33]">m[2][2]</Item>
<Item Name="[m34]">m[3][2]</Item>
<Item Name="[m41]">m[0][3]</Item>
<Item Name="[m42]">m[1][3]</Item>
<Item Name="[m43]">m[2][3]</Item>
<Item Name="[m44]">m[3][3]</Item>
</Expand>
</Type>
<Type Name="QSizePolicy">
<DisplayString>
{{ horizontal = {static_cast&lt;Policy&gt;(bits.horPolicy)}, vertical = {static_cast&lt;Policy&gt;(bits.verPolicy)}, type = {ControlType(1 &lt;&lt; bits.ctype)} }}
</DisplayString>
<Expand>
<Synthetic Name="[vertical policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.verPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[horizontal policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.horPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[control type]">
<DisplayString>QSizePolicy::ControlType::{ControlType(1 &lt;&lt; bits.ctype)}</DisplayString>
</Synthetic>
<Synthetic Name="[expanding directions]">
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.verPolicy) &amp; ExpandFlag)">
Qt::Vertical (2)
</DisplayString>
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.horPolicy) &amp; ExpandFlag)">
Qt::Horizontal (1)
</DisplayString>
</Synthetic>
<Item Name="[vertical stretch]">static_cast&lt;int&gt;(bits.verStretch)</Item>
<Item Name="[horizontal stretch]">static_cast&lt;int&gt;(bits.horStretch)</Item>
<Item Name="[has height for width]">bits.hfw == 1</Item>
<Item Name="[has width for height]">bits.wfh == 1</Item>
</Expand>
</Type>
<Type Name="QChar">
<DisplayString>{ucs,c}</DisplayString>
<StringView>ucs,c</StringView>
<Expand>
<Item Name="[latin 1]">ucs > 0xff ? '\0' : char(ucs),c</Item>
<Item Name="[unicode]">ucs,c</Item>
</Expand>
</Type>
<Type Name="QString">
<DisplayString>{((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),sub}</DisplayString>
<StringView>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),sub</StringView>
<Expand>
<Item Name="[size]">d-&gt;size</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d->offset / 2),c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QByteArray">
<DisplayString>{((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),sb}</DisplayString>
<StringView>((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),sb</StringView>
<Expand>
<Item Name="[size]">d-&gt;size</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QBitArray">
<DisplayString>{{ size = {(d.d-&gt;size &lt;&lt; 3) - *((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset)} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d.d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>(d.d-&gt;size &lt;&lt; 3) - *((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset)</Size>
<ValueNode>
(*(reinterpret_cast&lt;const unsigned char*&gt;((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset) + 1
+ ($i &gt;&gt; 3)) &amp; (1 &lt;&lt; ($i &amp; 7))) != 0
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QVarLengthArray&lt;*&gt;">
<AlternativeType Name="QVarLengthArray&lt;*, int&gt;"/>
<DisplayString>{{ size = {s} }}</DisplayString>
<Expand>
<Item Name="[capacity]">a</Item>
<ArrayItems>
<Size>s</Size>
<ValuePointer>ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QDate">
<DisplayString>{{ julian day = {jd} }}</DisplayString>
<Expand></Expand>
</Type>
<Type Name="QTime">
<DisplayString
Condition="mds == 1">{{ millisecond = {mds} }}</DisplayString>
<DisplayString
Condition="mds != 1">{{ milliseconds = {mds} }}</DisplayString>
<Expand>
<Item Name="[hour]"
Condition="(mds / 3600000) == 1">mds / 3600000, d</Item>
<Item Name="[hours]"
Condition="(mds / 3600000) != 1">mds / 3600000, d</Item>
<Item Name="[minute]"
Condition="((mds % 3600000) / 60000) == 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[minutes]"
Condition="((mds % 3600000) / 60000) != 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[second]"
Condition="((mds / 1000) % 60) == 1">(mds / 1000) % 60, d</Item>
<Item Name="[seconds]"
Condition="((mds / 1000) % 60) != 1">(mds / 1000) % 60, d</Item>
<Item Name="[millisecond]"
Condition="(mds % 1000) == 1">mds % 1000, d</Item>
<Item Name="[milliseconds]"
Condition="(mds % 1000) != 1">mds % 1000, d</Item>
</Expand>
</Type>
<Type Name="QRegularExpression">
<DisplayString>{d.pattern}</DisplayString>
</Type>
<Type Name="QSharedData">
<Expand>
<Item Name="[referenced]">ref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedPointer&lt;*&gt;">
<DisplayString>strong reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">value == 0</Item>
<Item Name="[weak referenced]">d-&gt;weakref._q_value</Item>
<Item Name="[strong referenced]">d-&gt;strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedDataPointer&lt;*&gt;">
<DisplayString>pointer to implicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QExplicitlySharedDataPointer&lt;*&gt;">
<DisplayString>pointer to explicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QPointer&lt;*&gt;">
<DisplayString>guarded pointer to subclass of QObject of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">wp.d == 0 || wp.d-&gt;strongref._q_value == 0 || wp.value == 0</Item>
</Expand>
</Type>
<Type Name="QWeakPointer&lt;*&gt;">
<DisplayString>weak reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">d == 0 || d-&gt;strongref._q_value == 0 || value == 0</Item>
<Item Name="[weak referenced]">d-&gt;weakref._q_value</Item>
<Item Name="[strong referenced]">d-&gt;strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QScopedPointer&lt;*&gt;">
<DisplayString>scoped pointer to a dynamically allocated object of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QScopedArrayPointer&lt;*&gt;">
<DisplayString>scoped pointer to dynamically allocated array of objects of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QPair&lt;*,*&gt;">
<DisplayString>({first}, {second})</DisplayString>
<Expand>
<Item Name="[first]">first</Item>
<Item Name="[second]">second</Item>
</Expand>
</Type>
<Type Name="QVector&lt;*&gt;">
<AlternativeType Name="QStack&lt;*&gt;"></AlternativeType>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>($T1*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QList&lt;*&gt;">
<AlternativeType Name="QStringList"></AlternativeType>
<AlternativeType Name="QQueue&lt;*&gt;"></AlternativeType>
<DisplayString>{{ size = {d-&gt;end - d-&gt;begin} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>d-&gt;end - d-&gt;begin</Size>
<ValueNode>*reinterpret_cast&lt;$T1*&gt;((sizeof($T1) &gt; sizeof(void*))
? reinterpret_cast&lt;Node*&gt;(d->array + d->begin + $i)->v
: reinterpret_cast&lt;$T1*&gt;(d->array + d->begin + $i))
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QLinkedList&lt;*&gt;">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<LinkedListItems>
<Size>d-&gt;size</Size>
<HeadPointer>d-&gt;n</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>(*(QLinkedListNode&lt;$T1&gt;*)this).t</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QMapNode&lt;*,*&gt;">
<DisplayString>({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]">key</Item>
<Item Name="[value]">value</Item>
</Expand>
</Type>
<Type Name="QMap&lt;*,*&gt;">
<AlternativeType Name="QMultiMap&lt;*,*&gt;"/>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<TreeItems>
<Size>d-&gt;size</Size>
<HeadPointer>d-&gt;header.left</HeadPointer>
<LeftPointer>left</LeftPointer>
<RightPointer>right</RightPointer>
<ValueNode>*((QMapNode&lt;$T1,$T2&gt;*)this)</ValueNode>
</TreeItems>
</Expand>
</Type>
<Type Name="QHashNode&lt;*,*&gt;">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
<Item Name="[value]" Condition="next != 0">value</Item>
<Item Name="[next]" Condition="next != 0">next</Item>
</Expand>
</Type>
<Type Name="QHash&lt;*,*&gt;">
<AlternativeType Name="QMultiHash&lt;*,*&gt;"/>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<ArrayItems IncludeView="buckets">
<Size>d-&gt;numBuckets</Size>
<ValuePointer>reinterpret_cast&lt;Node **&gt;(d-&gt;buckets)</ValuePointer>
</ArrayItems>
<CustomListItems ExcludeView="buckets">
<Variable Name="n" InitialValue="d-&gt;numBuckets"/>
<Variable Name="bucket" InitialValue="d-&gt;buckets"/>
<Variable Name="node" InitialValue="d-&gt;buckets[0]"/>
<Variable Name="keyValuePair" InitialValue="reinterpret_cast&lt;Node *&gt;(0)"/>
<Size>d-&gt;size</Size>
<Loop>
<Break Condition="n == 0"/>
<Exec>node = *(bucket++)</Exec>
<Exec>--n</Exec>
<Loop>
<Break Condition="!node || !node->next"/>
<Exec>keyValuePair = reinterpret_cast&lt;Node *&gt;(node)</Exec>
<Item Name="[{keyValuePair-&gt;key}]">keyValuePair-&gt;value</Item>
<Exec>node = node-&gt;next</Exec>
</Loop>
</Loop>
</CustomListItems>
</Expand>
</Type>
<Type Name="QHashNode&lt;*,QHashDummyValue&gt;">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
</Expand>
</Type>
<Type Name="QSet&lt;*&gt;">
<DisplayString>{{ size = {q_hash.d-&gt;size} }}</DisplayString>
<Expand>
<ExpandedItem>q_hash</ExpandedItem>
</Expand>
</Type>
<Type Name="QCache&lt;*,*&gt;::Node">
<DisplayString>({*keyPtr}, {*t})</DisplayString>
<Expand>
<Item Name="[key]">*keyPtr</Item>
<Item Name="[value]">*t</Item>
</Expand>
</Type>
<Type Name="QCache&lt;*,*&gt;">
<DisplayString>{{ size = {hash.d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[max coast]">mx</Item>
<Item Name="[total coast]">total</Item>
<Item Name="[referenced]">hash.d-&gt;ref.atomic._q_value</Item>
<LinkedListItems>
<Size>hash.d-&gt;size</Size>
<HeadPointer>f</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>*((Node*)this)</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QVariant">
<!--Region DisplayString QVariant-->
<DisplayString Condition="d.type == QMetaType::UnknownType">Invalid</DisplayString>
<DisplayString Condition="d.type == QMetaType::Bool">{d.data.b}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Int">{d.data.i}</DisplayString>
<DisplayString Condition="d.type == QMetaType::UInt">{d.data.u}</DisplayString>
<DisplayString Condition="d.type == QMetaType::LongLong">{d.data.ll}</DisplayString>
<DisplayString Condition="d.type == QMetaType::ULongLong">{d.data.ull}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Double">{d.data.d}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QChar">{d.data.c}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantMap">
{*((QMap&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantList">
{*((QList&lt;QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QString">
{*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QStringList">
{*((QStringList*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QByteArray">
{*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitArray">
{*((QBitArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDate">
{*((QDate*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTime">
{*((QTime*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDateTime">DateTime</DisplayString>
<DisplayString Condition="d.type == QMetaType::QUrl">Url</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLocale">Locale</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRect">
{*((QRect*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRectF">
{*((QRectF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSize">
{*((QSize*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizeF">
{*((QSizeF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLine">
{*((QLine*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLineF">
{*((QLineF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPoint">
{*((QPoint*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPointF">
{*((QPointF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegExp">RegExp</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegularExpression">RegularExpression</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantHash">
{*((QHash&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QEasingCurve">EasingCurve</DisplayString>
<DisplayString Condition="d.type == QMetaType::QUuid">Uuid</DisplayString>
<DisplayString Condition="d.type == QMetaType::QModelIndex">ModelIndex</DisplayString>
<DisplayString Condition="d.type == QMetaType::LastCoreType">LastCoreType</DisplayString>
<DisplayString Condition="d.type == QMetaType::QFont">Font</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPixmap">Pixmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBrush">Brush</DisplayString>
<DisplayString Condition="d.type == QMetaType::QColor">Color</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPalette">Palette</DisplayString>
<DisplayString Condition="d.type == QMetaType::QImage">Image</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPolygon">Polygon</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegion">Region</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitmap">Bitmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QCursor">Cursor</DisplayString>
<DisplayString Condition="d.type == QMetaType::QKeySequence">KeySequence</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPen">Pen</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextLength">TextLength</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextFormat">TextFormat</DisplayString>
<DisplayString Condition="d.type == QMetaType::QMatrix">Matrix</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTransform">Transform</DisplayString>
<DisplayString Condition="d.type == QMetaType::QMatrix4x4">Matrix4x4</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector2D">Vector2D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector3D">Vector3D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector4D">Vector4D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QQuaternion">Quaternion</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPolygonF">PolygonF</DisplayString>
<DisplayString Condition="d.type == QMetaType::QIcon">Icon</DisplayString>
<DisplayString Condition="d.type == QMetaType::LastGuiType">LastGuiType</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizePolicy">SizePolicy</DisplayString>
<DisplayString Condition="d.type == QMetaType::User">UserType</DisplayString>
<DisplayString Condition="d.type == 0xffffffff">LastType</DisplayString>
<!--End region DisplayString QVariant-->
<!--Region DisplayView QVariant-->
<StringView Condition="d.type == QMetaType::QChar">d.data.c</StringView>
<StringView Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</StringView>
<StringView Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</StringView>
<!--End region DisplayView QVariant-->
<!--Region Expand QVariant-->
<Expand>
<ExpandedItem Condition="d.type == QMetaType::QVariantMap">
*((QMap&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantList">
*((QList&lt;QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QStringList">
*((QStringList*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QBitArray">
*((QBitArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QDate">
*((QDate*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QTime">
*((QTime*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRect">
*((QRect*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRectF">
*((QRectF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSize">
*((QSize*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSizeF">
*((QSizeF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLine">
*((QLine*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLineF">
*((QLineF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPoint">
*((QPoint*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPointF">
*((QPointF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantHash">
*((QHash&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
</Expand>
<!--End region Expand QVariant-->
</Type>
</AutoVisualizer>
File diff suppressed because it is too large Load Diff
+735
View File
@@ -0,0 +1,735 @@
<?xml version="1.0" encoding="utf-8"?>
<!--************************************************************************************************
Copyright (C) 2024 The Qt Company Ltd.
SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
*************************************************************************************************-->
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="##NAMESPACE##::QPropertyData&lt;*&gt;">
<DisplayString>{val}</DisplayString>
<Expand>
<Item Name="[value]">val</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QQuickItemPrivate">
<Intrinsic Name="_hasExtraData" Expression="extra.d.d != 0" />
<Intrinsic Name="_extraData" Expression="(*(ExtraData*)extra.d.d)" />
<Intrinsic Name="_objectName" Expression="(extraData-&gt;objectName).val.d.ptr" />
<DisplayString Condition="_hasExtraData()">{{ x = {x,g}, y = {y,g}, z = {_extraData().z,g}, width = {width,g}, height = {height,g} }}</DisplayString>
<DisplayString>{{ x = {x,g}, y = {y,g}, width = {width,g}, height = {height,g} }}</DisplayString>
<Expand>
<Item Name="x">x</Item>
<Item Name="y">y</Item>
<Item Name="z" Condition="_hasExtraData()">_extraData().z</Item>
<Item Name="scale" Condition="_hasExtraData()">_extraData().scale</Item>
<Item Name="rotation" Condition="_hasExtraData()">_extraData().rotation</Item>
<Item Name="opacity" Condition="_hasExtraData()">_extraData().opacity</Item>
<Item Name="width">width</Item>
<Item Name="height">height</Item>
<Item Name="implicitWidth">implicitWidth</Item>
<Item Name="implicitHeight">implicitHeight</Item>
<Item Name="visible">effectiveVisible</Item>
<Item Name="enabled">explicitEnable</Item>
<Item Name="objectName" Condition="_objectName() != 0">_objectName(),na</Item>
<Item Name="parentItem">parentItem</Item>
<Item Name="childItems">childItems, nr</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QQuickItem">
<DisplayString>{d_ptr.d,na}</DisplayString>
<Expand>
<ExpandedItem>d_ptr.d</ExpandedItem>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QUuid">
<DisplayString>{{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}}</DisplayString>
</Type>
<Type Name="##NAMESPACE##::QSpecialInteger&lt;*&gt;">
<DisplayString>{val}</DisplayString>
<Expand>
<Item Name="[value]">val</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QBasicAtomicInteger&lt;*&gt;">
<DisplayString>{_q_value}</DisplayString>
<Expand>
<Item Name="[value]">_q_value</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QBasicAtomicPointer&lt;*&gt;">
<Intrinsic Name="isNull" Expression="value()==0" />
<Intrinsic Name="value" Expression="_q_value.value()" />
<DisplayString Condition="isNull()">empty</DisplayString>
<DisplayString Condition="!isNull()">{_q_value}</DisplayString>
<Expand>
<Item Name=" " Condition="!isNull()">*value()</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QPoint">
<AlternativeType Name="##NAMESPACE##::QPointF"/>
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QRect">
<DisplayString>{{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}</DisplayString>
<Expand>
<Item Name="[x]">x1</Item>
<Item Name="[y]">y1</Item>
<Item Name="[width]">x2 - x1 + 1</Item>
<Item Name="[height]">y2 - y1 + 1</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QRectF">
<DisplayString>{{ x = {xp}, y = {yp}, width = {w}, height = {h} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[width]">w</Item>
<Item Name="[height]">h</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QSize">
<AlternativeType Name="##NAMESPACE##::QSizeF"/>
<DisplayString>{{ width = {wd}, height = {ht} }}</DisplayString>
<Expand>
<Item Name="[width]">wd</Item>
<Item Name="[height]">ht</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QLine">
<AlternativeType Name="##NAMESPACE##::QLineF"/>
<DisplayString>{{ start point = {pt1}, end point = {pt2} }}</DisplayString>
<Expand>
<Synthetic Name="[start point]">
<DisplayString>{pt1}</DisplayString>
<Expand>
<ExpandedItem>pt1</ExpandedItem>
</Expand>
</Synthetic>
<Synthetic Name="[end point]">
<DisplayString>{pt2}</DisplayString>
<Expand>
<ExpandedItem>pt2</ExpandedItem>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QPolygon">
<DisplayString>{{ size={d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPoint*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QPolygonF">
<DisplayString>{{ size={d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[closed]">
d-&gt;size &gt; 0
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).xp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).xp)
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).yp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).yp)
</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QVector2D">
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QVector3D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QVector4D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
<Item Name="[w]">wp</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QMatrix">
<DisplayString>
{{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">_m11</Item>
<Item Name="[m12]">_m12</Item>
<Item Name="[m21]">_m21</Item>
<Item Name="[m22]">_m22</Item>
<Item Name="[dx]">_dx</Item>
<Item Name="[dy]">_dy</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QMatrix4x4">
<DisplayString>
{{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">m[0][0]</Item>
<Item Name="[m12]">m[1][0]</Item>
<Item Name="[m13]">m[2][0]</Item>
<Item Name="[m14]">m[3][0]</Item>
<Item Name="[m21]">m[0][1]</Item>
<Item Name="[m22]">m[1][1]</Item>
<Item Name="[m23]">m[2][1]</Item>
<Item Name="[m24]">m[3][1]</Item>
<Item Name="[m31]">m[0][2]</Item>
<Item Name="[m32]">m[1][2]</Item>
<Item Name="[m33]">m[2][2]</Item>
<Item Name="[m34]">m[3][2]</Item>
<Item Name="[m41]">m[0][3]</Item>
<Item Name="[m42]">m[1][3]</Item>
<Item Name="[m43]">m[2][3]</Item>
<Item Name="[m44]">m[3][3]</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QSizePolicy">
<DisplayString>
{{ horizontal = {static_cast&lt;Policy&gt;(bits.horPolicy)}, vertical = {static_cast&lt;Policy&gt;(bits.verPolicy)}, type = {ControlType(1 &lt;&lt; bits.ctype)} }}
</DisplayString>
<Expand>
<Synthetic Name="[vertical policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.verPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[horizontal policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.horPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[control type]">
<DisplayString>QSizePolicy::ControlType::{ControlType(1 &lt;&lt; bits.ctype)}</DisplayString>
</Synthetic>
<Synthetic Name="[expanding directions]">
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.verPolicy) &amp; ExpandFlag)">
Qt::Vertical (2)
</DisplayString>
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.horPolicy) &amp; ExpandFlag)">
Qt::Horizontal (1)
</DisplayString>
</Synthetic>
<Item Name="[vertical stretch]">static_cast&lt;int&gt;(bits.verStretch)</Item>
<Item Name="[horizontal stretch]">static_cast&lt;int&gt;(bits.horStretch)</Item>
<Item Name="[has height for width]">bits.hfw == 1</Item>
<Item Name="[has width for height]">bits.wfh == 1</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QChar">
<DisplayString>{ucs,c}</DisplayString>
<StringView>ucs,c</StringView>
<Expand>
<Item Name="[latin 1]">ucs > 0xff ? '\0' : char(ucs),c</Item>
<Item Name="[unicode]">ucs,c</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QString">
<DisplayString>&quot;{(reinterpret_cast&lt;unsigned short*&gt;(d.ptr)),sub}&quot;</DisplayString>
<StringView>(reinterpret_cast&lt;unsigned short*&gt;(d.ptr)),sub</StringView>
<Expand>
<Item Name="[size]">d.size</Item>
<ArrayItems>
<Size>d.size</Size>
<ValuePointer>d.ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QStringRef">
<DisplayString Condition="m_string == nullptr">{m_string,[m_size]} u""</DisplayString>
<DisplayString Condition="m_string != nullptr">{m_string-&gt;d.ptr+m_position,[m_size]}</DisplayString>
<StringView Condition="m_string == nullptr">""</StringView>
<StringView Condition="m_string != nullptr">m_string,[m_position+m_size]</StringView>
<Expand>
<Item Name="[position]" ExcludeView="simple">m_position</Item>
<Item Name="[size]" ExcludeView="simple">m_size</Item>
<ArrayItems Condition="m_string != nullptr">
<Size>m_size</Size>
<ValuePointer>m_string-&gt;d.ptr+m_position</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QStringView">
<DisplayString>{m_data,[m_size]}</DisplayString>
<StringView>m_data,[m_size]</StringView>
<Expand>
<Item Name="[size]" ExcludeView="simple">m_size</Item>
<ArrayItems>
<Size>m_size</Size>
<ValuePointer>m_data</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QByteArray">
<DisplayString>&quot;{((reinterpret_cast&lt;char*&gt;(d.ptr))),sb}&quot;</DisplayString>
<StringView>((reinterpret_cast&lt;char*&gt;(d.ptr))),sb</StringView>
<Expand>
<Item Name="[size]">d.size</Item>
<ArrayItems>
<Size>d.size</Size>
<ValuePointer>d.ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QUrl">
<Intrinsic Name="isEmpty" Expression="size==0">
<Parameter Name="size" Type="int"/>
</Intrinsic>
<Intrinsic Name="memberOffset" Expression="sizeof(QAtomicInt) + sizeof(int) + (sizeof(QString) * count)">
<Parameter Name="count" Type="int"/>
</Intrinsic>
<Intrinsic Name="scheme" Expression="*((QString*)(((char*)(d) + memberOffset(0))))" />
<Intrinsic Name="username" Expression="*((QString*)(((char*)(d) + memberOffset(1))))" />
<Intrinsic Name="password" Expression="*((QString*)(((char*)(d) + memberOffset(2))))" />
<Intrinsic Name="host" Expression="*((QString*)(((char*)(d) + memberOffset(3))))" />
<Intrinsic Name="path" Expression="*((QString*)(((char*)(d) + memberOffset(4))))" />
<Intrinsic Name="query" Expression="*((QString*)(((char*)(d) + memberOffset(5))))" />
<Intrinsic Name="fragment" Expression="*((QString*)(((char*)(d) + memberOffset(6))))" />
<DisplayString Condition="!isEmpty(scheme().d-&gt;size)">{scheme()}://{host()}{path()}</DisplayString>
<DisplayString Condition="isEmpty(scheme().d-&gt;size)">{path()}</DisplayString>
<Expand>
<Item Name="[scheme]">scheme()</Item>
<Item Name="[username]">username()</Item>
<Item Name="[password]">password()</Item>
<Item Name="[host]">host()</Item>
<Item Name="[path]">path()</Item>
<Item Name="[query]">query()</Item>
<Item Name="[fragment]">fragment()</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QDate">
<DisplayString>{{ julian day = {jd} }}</DisplayString>
</Type>
<Type Name="##NAMESPACE##::QTime">
<Intrinsic Name="hour" Expression="mds / 3600000" />
<Intrinsic Name="minute" Expression="(mds % 3600000) / 60000" />
<Intrinsic Name="second" Expression="(mds / 1000) % 60" />
<Intrinsic Name="millisecond" Expression="mds % 1000" />
<DisplayString Condition="mds == 1">{{ millisecond = {mds} }}</DisplayString>
<DisplayString Condition="mds != 1">{{ milliseconds = {mds} }}</DisplayString>
<Expand>
<Item Name="[hour]"
Condition="(mds / 3600000) == 1">hour(), d</Item>
<Item Name="[hours]"
Condition="(mds / 3600000) != 1">hour(), d</Item>
<Item Name="[minute]"
Condition="((mds % 3600000) / 60000) == 1">minute(), d</Item>
<Item Name="[minutes]"
Condition="((mds % 3600000) / 60000) != 1">minute(), d</Item>
<Item Name="[second]"
Condition="((mds / 1000) % 60) == 1">second(), d</Item>
<Item Name="[seconds]"
Condition="((mds / 1000) % 60) != 1">second(), d</Item>
<Item Name="[millisecond]"
Condition="(mds % 1000) == 1">millisecond(), d</Item>
<Item Name="[milliseconds]"
Condition="(mds % 1000) != 1">millisecond(), d</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QPair&lt;*,*&gt;">
<DisplayString>({first}, {second})</DisplayString>
<Expand>
<Item Name="[first]">first</Item>
<Item Name="[second]">second</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QList&lt;*&gt;">
<AlternativeType Name="##NAMESPACE##::QVector&lt;*&gt;"/>
<DisplayString>{{ size={d.size} }}</DisplayString>
<Expand>
<ArrayItems>
<Size>d.size</Size>
<ValuePointer>reinterpret_cast&lt;$T1*&gt;(d.ptr)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QVarLengthArray&lt;*&gt;">
<DisplayString>{{ size={s} }}</DisplayString>
<Expand>
<Item Name="[capacity]">a</Item>
<ArrayItems>
<Size>s</Size>
<ValuePointer>ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QMap&lt;*,*&gt;">
<AlternativeType Name="##NAMESPACE##::QMultiMap&lt;*,*&gt;"/>
<DisplayString>{{ size={d.d-&gt;m._Mypair._Myval2._Myval2._Mysize} }}</DisplayString>
<Expand>
<TreeItems>
<Size>d.d-&gt;m._Mypair._Myval2._Myval2._Mysize</Size>
<HeadPointer>d.d-&gt;m._Mypair._Myval2._Myval2._Myhead-&gt;_Parent</HeadPointer>
<LeftPointer>_Left</LeftPointer>
<RightPointer>_Right</RightPointer>
<ValueNode Condition="_Isnil == 0" Name="[{_Myval.first}]">_Myval,view(MapHelper)</ValueNode>
</TreeItems>
</Expand>
</Type>
<Type Name="std::pair&lt;*, *&gt;" IncludeView="MapHelper">
<DisplayString>{second}</DisplayString>
</Type>
<Type Name="##NAMESPACE##::QHashPrivate::Node&lt;*,*&gt;">
<DisplayString>{value}</DisplayString>
<Expand>
<Item Name="key">key</Item>
<Item Name="value">value</Item>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QHashPrivate::MultiNode&lt;*,*&gt;">
<DisplayString Condition="value-&gt;next == 0">{value-&gt;value}</DisplayString>
<DisplayString Condition="value-&gt;next != 0 &amp;&amp; value-&gt;next-&gt;next == 0">({value-&gt;value}, {value-&gt;next-&gt;value})</DisplayString>
<DisplayString Condition="value-&gt;next != 0 &amp;&amp; value-&gt;next-&gt;next != 0">({value-&gt;value}, {value-&gt;next-&gt;value}, ...)</DisplayString>
<Expand>
<LinkedListItems>
<HeadPointer>value</HeadPointer>
<NextPointer>next</NextPointer>
<ValueNode>value</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QHash&lt;*,*&gt;">
<AlternativeType Name="##NAMESPACE##::QMultiHash&lt;*,*&gt;"/>
<Intrinsic Name="getOffset" Category="Method" Expression="d-&gt;spans[span].offsets[offset]">
<Parameter Name="span" Type="int" />
<Parameter Name="offset" Type="int" />
</Intrinsic>
<Intrinsic Name="getKey" Category="Method" Expression="((Node*)(char *)&amp;(d-&gt;spans[span].entries[d-&gt;spans[span].offsets[offset]].storage))->key">
<Parameter Name="span" Type="int" />
<Parameter Name="offset" Type="int" />
</Intrinsic>
<Intrinsic Name="getNode" Category="Method" Expression="*((Node*)(char *)&amp;(d-&gt;spans[span].entries[d-&gt;spans[span].offsets[offset]].storage))">
<Parameter Name="span" Type="int" />
<Parameter Name="offset" Type="int" />
</Intrinsic>
<DisplayString>{{ size={d-&gt;size} }}</DisplayString>
<Expand>
<CustomListItems MaxItemsPerView="5000">
<Variable Name="iSpan" InitialValue="0" />
<Variable Name="spanCount" InitialValue="d-&gt;numBuckets" />
<Size>d-&gt;size</Size>
<Loop>
<If Condition="iSpan != spanCount">
<Item Name="[{getKey(iSpan, 0)}]" Condition="getOffset(iSpan, 0) != 255">getNode(iSpan, 0)</Item>
<Item Name="[{getKey(iSpan, 1)}]" Condition="getOffset(iSpan, 1) != 255">getNode(iSpan, 1)</Item>
<Item Name="[{getKey(iSpan, 2)}]" Condition="getOffset(iSpan, 2) != 255">getNode(iSpan, 2)</Item>
<Item Name="[{getKey(iSpan, 3)}]" Condition="getOffset(iSpan, 3) != 255">getNode(iSpan, 3)</Item>
<Item Name="[{getKey(iSpan, 4)}]" Condition="getOffset(iSpan, 4) != 255">getNode(iSpan, 4)</Item>
<Item Name="[{getKey(iSpan, 5)}]" Condition="getOffset(iSpan, 5) != 255">getNode(iSpan, 5)</Item>
<Item Name="[{getKey(iSpan, 6)}]" Condition="getOffset(iSpan, 6) != 255">getNode(iSpan, 6)</Item>
<Item Name="[{getKey(iSpan, 7)}]" Condition="getOffset(iSpan, 7) != 255">getNode(iSpan, 7)</Item>
<Item Name="[{getKey(iSpan, 8)}]" Condition="getOffset(iSpan, 8) != 255">getNode(iSpan, 8)</Item>
<Item Name="[{getKey(iSpan, 9)}]" Condition="getOffset(iSpan, 9) != 255">getNode(iSpan, 9)</Item>
<Item Name="[{getKey(iSpan, 10)}]" Condition="getOffset(iSpan, 10) != 255">getNode(iSpan, 10)</Item>
<Item Name="[{getKey(iSpan, 11)}]" Condition="getOffset(iSpan, 11) != 255">getNode(iSpan, 11)</Item>
<Item Name="[{getKey(iSpan, 12)}]" Condition="getOffset(iSpan, 12) != 255">getNode(iSpan, 12)</Item>
<Item Name="[{getKey(iSpan, 13)}]" Condition="getOffset(iSpan, 13) != 255">getNode(iSpan, 13)</Item>
<Item Name="[{getKey(iSpan, 14)}]" Condition="getOffset(iSpan, 14) != 255">getNode(iSpan, 14)</Item>
<Item Name="[{getKey(iSpan, 15)}]" Condition="getOffset(iSpan, 15) != 255">getNode(iSpan, 15)</Item>
<Item Name="[{getKey(iSpan, 16)}]" Condition="getOffset(iSpan, 16) != 255">getNode(iSpan, 16)</Item>
<Item Name="[{getKey(iSpan, 17)}]" Condition="getOffset(iSpan, 17) != 255">getNode(iSpan, 17)</Item>
<Item Name="[{getKey(iSpan, 18)}]" Condition="getOffset(iSpan, 18) != 255">getNode(iSpan, 18)</Item>
<Item Name="[{getKey(iSpan, 19)}]" Condition="getOffset(iSpan, 19) != 255">getNode(iSpan, 19)</Item>
<Item Name="[{getKey(iSpan, 20)}]" Condition="getOffset(iSpan, 20) != 255">getNode(iSpan, 20)</Item>
<Item Name="[{getKey(iSpan, 21)}]" Condition="getOffset(iSpan, 21) != 255">getNode(iSpan, 21)</Item>
<Item Name="[{getKey(iSpan, 22)}]" Condition="getOffset(iSpan, 22) != 255">getNode(iSpan, 22)</Item>
<Item Name="[{getKey(iSpan, 23)}]" Condition="getOffset(iSpan, 23) != 255">getNode(iSpan, 23)</Item>
<Item Name="[{getKey(iSpan, 24)}]" Condition="getOffset(iSpan, 24) != 255">getNode(iSpan, 24)</Item>
<Item Name="[{getKey(iSpan, 25)}]" Condition="getOffset(iSpan, 25) != 255">getNode(iSpan, 25)</Item>
<Item Name="[{getKey(iSpan, 26)}]" Condition="getOffset(iSpan, 26) != 255">getNode(iSpan, 26)</Item>
<Item Name="[{getKey(iSpan, 27)}]" Condition="getOffset(iSpan, 27) != 255">getNode(iSpan, 27)</Item>
<Item Name="[{getKey(iSpan, 28)}]" Condition="getOffset(iSpan, 28) != 255">getNode(iSpan, 28)</Item>
<Item Name="[{getKey(iSpan, 29)}]" Condition="getOffset(iSpan, 29) != 255">getNode(iSpan, 29)</Item>
<Item Name="[{getKey(iSpan, 30)}]" Condition="getOffset(iSpan, 30) != 255">getNode(iSpan, 30)</Item>
<Item Name="[{getKey(iSpan, 31)}]" Condition="getOffset(iSpan, 31) != 255">getNode(iSpan, 31)</Item>
<Item Name="[{getKey(iSpan, 32)}]" Condition="getOffset(iSpan, 32) != 255">getNode(iSpan, 32)</Item>
<Item Name="[{getKey(iSpan, 33)}]" Condition="getOffset(iSpan, 33) != 255">getNode(iSpan, 33)</Item>
<Item Name="[{getKey(iSpan, 34)}]" Condition="getOffset(iSpan, 34) != 255">getNode(iSpan, 34)</Item>
<Item Name="[{getKey(iSpan, 35)}]" Condition="getOffset(iSpan, 35) != 255">getNode(iSpan, 35)</Item>
<Item Name="[{getKey(iSpan, 36)}]" Condition="getOffset(iSpan, 36) != 255">getNode(iSpan, 36)</Item>
<Item Name="[{getKey(iSpan, 37)}]" Condition="getOffset(iSpan, 37) != 255">getNode(iSpan, 37)</Item>
<Item Name="[{getKey(iSpan, 38)}]" Condition="getOffset(iSpan, 38) != 255">getNode(iSpan, 38)</Item>
<Item Name="[{getKey(iSpan, 39)}]" Condition="getOffset(iSpan, 39) != 255">getNode(iSpan, 39)</Item>
<Item Name="[{getKey(iSpan, 40)}]" Condition="getOffset(iSpan, 40) != 255">getNode(iSpan, 40)</Item>
<Item Name="[{getKey(iSpan, 41)}]" Condition="getOffset(iSpan, 41) != 255">getNode(iSpan, 41)</Item>
<Item Name="[{getKey(iSpan, 42)}]" Condition="getOffset(iSpan, 42) != 255">getNode(iSpan, 42)</Item>
<Item Name="[{getKey(iSpan, 43)}]" Condition="getOffset(iSpan, 43) != 255">getNode(iSpan, 43)</Item>
<Item Name="[{getKey(iSpan, 44)}]" Condition="getOffset(iSpan, 44) != 255">getNode(iSpan, 44)</Item>
<Item Name="[{getKey(iSpan, 45)}]" Condition="getOffset(iSpan, 45) != 255">getNode(iSpan, 45)</Item>
<Item Name="[{getKey(iSpan, 46)}]" Condition="getOffset(iSpan, 46) != 255">getNode(iSpan, 46)</Item>
<Item Name="[{getKey(iSpan, 47)}]" Condition="getOffset(iSpan, 47) != 255">getNode(iSpan, 47)</Item>
<Item Name="[{getKey(iSpan, 48)}]" Condition="getOffset(iSpan, 48) != 255">getNode(iSpan, 48)</Item>
<Item Name="[{getKey(iSpan, 49)}]" Condition="getOffset(iSpan, 49) != 255">getNode(iSpan, 49)</Item>
<Item Name="[{getKey(iSpan, 50)}]" Condition="getOffset(iSpan, 50) != 255">getNode(iSpan, 50)</Item>
<Item Name="[{getKey(iSpan, 51)}]" Condition="getOffset(iSpan, 51) != 255">getNode(iSpan, 51)</Item>
<Item Name="[{getKey(iSpan, 52)}]" Condition="getOffset(iSpan, 52) != 255">getNode(iSpan, 52)</Item>
<Item Name="[{getKey(iSpan, 53)}]" Condition="getOffset(iSpan, 53) != 255">getNode(iSpan, 53)</Item>
<Item Name="[{getKey(iSpan, 54)}]" Condition="getOffset(iSpan, 54) != 255">getNode(iSpan, 54)</Item>
<Item Name="[{getKey(iSpan, 55)}]" Condition="getOffset(iSpan, 55) != 255">getNode(iSpan, 55)</Item>
<Item Name="[{getKey(iSpan, 56)}]" Condition="getOffset(iSpan, 56) != 255">getNode(iSpan, 56)</Item>
<Item Name="[{getKey(iSpan, 57)}]" Condition="getOffset(iSpan, 57) != 255">getNode(iSpan, 57)</Item>
<Item Name="[{getKey(iSpan, 58)}]" Condition="getOffset(iSpan, 58) != 255">getNode(iSpan, 58)</Item>
<Item Name="[{getKey(iSpan, 59)}]" Condition="getOffset(iSpan, 59) != 255">getNode(iSpan, 59)</Item>
<Item Name="[{getKey(iSpan, 60)}]" Condition="getOffset(iSpan, 60) != 255">getNode(iSpan, 60)</Item>
<Item Name="[{getKey(iSpan, 61)}]" Condition="getOffset(iSpan, 61) != 255">getNode(iSpan, 61)</Item>
<Item Name="[{getKey(iSpan, 62)}]" Condition="getOffset(iSpan, 62) != 255">getNode(iSpan, 62)</Item>
<Item Name="[{getKey(iSpan, 63)}]" Condition="getOffset(iSpan, 63) != 255">getNode(iSpan, 63)</Item>
<Item Name="[{getKey(iSpan, 64)}]" Condition="getOffset(iSpan, 64) != 255">getNode(iSpan, 64)</Item>
<Item Name="[{getKey(iSpan, 65)}]" Condition="getOffset(iSpan, 65) != 255">getNode(iSpan, 65)</Item>
<Item Name="[{getKey(iSpan, 66)}]" Condition="getOffset(iSpan, 66) != 255">getNode(iSpan, 66)</Item>
<Item Name="[{getKey(iSpan, 67)}]" Condition="getOffset(iSpan, 67) != 255">getNode(iSpan, 67)</Item>
<Item Name="[{getKey(iSpan, 68)}]" Condition="getOffset(iSpan, 68) != 255">getNode(iSpan, 68)</Item>
<Item Name="[{getKey(iSpan, 69)}]" Condition="getOffset(iSpan, 69) != 255">getNode(iSpan, 69)</Item>
<Item Name="[{getKey(iSpan, 70)}]" Condition="getOffset(iSpan, 70) != 255">getNode(iSpan, 70)</Item>
<Item Name="[{getKey(iSpan, 71)}]" Condition="getOffset(iSpan, 71) != 255">getNode(iSpan, 71)</Item>
<Item Name="[{getKey(iSpan, 72)}]" Condition="getOffset(iSpan, 72) != 255">getNode(iSpan, 72)</Item>
<Item Name="[{getKey(iSpan, 73)}]" Condition="getOffset(iSpan, 73) != 255">getNode(iSpan, 73)</Item>
<Item Name="[{getKey(iSpan, 74)}]" Condition="getOffset(iSpan, 74) != 255">getNode(iSpan, 74)</Item>
<Item Name="[{getKey(iSpan, 75)}]" Condition="getOffset(iSpan, 75) != 255">getNode(iSpan, 75)</Item>
<Item Name="[{getKey(iSpan, 76)}]" Condition="getOffset(iSpan, 76) != 255">getNode(iSpan, 76)</Item>
<Item Name="[{getKey(iSpan, 77)}]" Condition="getOffset(iSpan, 77) != 255">getNode(iSpan, 77)</Item>
<Item Name="[{getKey(iSpan, 78)}]" Condition="getOffset(iSpan, 78) != 255">getNode(iSpan, 78)</Item>
<Item Name="[{getKey(iSpan, 79)}]" Condition="getOffset(iSpan, 79) != 255">getNode(iSpan, 79)</Item>
<Item Name="[{getKey(iSpan, 80)}]" Condition="getOffset(iSpan, 80) != 255">getNode(iSpan, 80)</Item>
<Item Name="[{getKey(iSpan, 81)}]" Condition="getOffset(iSpan, 81) != 255">getNode(iSpan, 81)</Item>
<Item Name="[{getKey(iSpan, 82)}]" Condition="getOffset(iSpan, 82) != 255">getNode(iSpan, 82)</Item>
<Item Name="[{getKey(iSpan, 83)}]" Condition="getOffset(iSpan, 83) != 255">getNode(iSpan, 83)</Item>
<Item Name="[{getKey(iSpan, 84)}]" Condition="getOffset(iSpan, 84) != 255">getNode(iSpan, 84)</Item>
<Item Name="[{getKey(iSpan, 85)}]" Condition="getOffset(iSpan, 85) != 255">getNode(iSpan, 85)</Item>
<Item Name="[{getKey(iSpan, 86)}]" Condition="getOffset(iSpan, 86) != 255">getNode(iSpan, 86)</Item>
<Item Name="[{getKey(iSpan, 87)}]" Condition="getOffset(iSpan, 87) != 255">getNode(iSpan, 87)</Item>
<Item Name="[{getKey(iSpan, 88)}]" Condition="getOffset(iSpan, 88) != 255">getNode(iSpan, 88)</Item>
<Item Name="[{getKey(iSpan, 89)}]" Condition="getOffset(iSpan, 89) != 255">getNode(iSpan, 89)</Item>
<Item Name="[{getKey(iSpan, 90)}]" Condition="getOffset(iSpan, 90) != 255">getNode(iSpan, 90)</Item>
<Item Name="[{getKey(iSpan, 91)}]" Condition="getOffset(iSpan, 91) != 255">getNode(iSpan, 91)</Item>
<Item Name="[{getKey(iSpan, 92)}]" Condition="getOffset(iSpan, 92) != 255">getNode(iSpan, 92)</Item>
<Item Name="[{getKey(iSpan, 93)}]" Condition="getOffset(iSpan, 93) != 255">getNode(iSpan, 93)</Item>
<Item Name="[{getKey(iSpan, 94)}]" Condition="getOffset(iSpan, 94) != 255">getNode(iSpan, 94)</Item>
<Item Name="[{getKey(iSpan, 95)}]" Condition="getOffset(iSpan, 95) != 255">getNode(iSpan, 95)</Item>
<Item Name="[{getKey(iSpan, 96)}]" Condition="getOffset(iSpan, 96) != 255">getNode(iSpan, 96)</Item>
<Item Name="[{getKey(iSpan, 97)}]" Condition="getOffset(iSpan, 97) != 255">getNode(iSpan, 97)</Item>
<Item Name="[{getKey(iSpan, 98)}]" Condition="getOffset(iSpan, 98) != 255">getNode(iSpan, 98)</Item>
<Item Name="[{getKey(iSpan, 99)}]" Condition="getOffset(iSpan, 99) != 255">getNode(iSpan, 99)</Item>
<Item Name="[{getKey(iSpan, 100)}]" Condition="getOffset(iSpan, 100) != 255">getNode(iSpan, 100)</Item>
<Item Name="[{getKey(iSpan, 101)}]" Condition="getOffset(iSpan, 101) != 255">getNode(iSpan, 101)</Item>
<Item Name="[{getKey(iSpan, 102)}]" Condition="getOffset(iSpan, 102) != 255">getNode(iSpan, 102)</Item>
<Item Name="[{getKey(iSpan, 103)}]" Condition="getOffset(iSpan, 103) != 255">getNode(iSpan, 103)</Item>
<Item Name="[{getKey(iSpan, 104)}]" Condition="getOffset(iSpan, 104) != 255">getNode(iSpan, 104)</Item>
<Item Name="[{getKey(iSpan, 105)}]" Condition="getOffset(iSpan, 105) != 255">getNode(iSpan, 105)</Item>
<Item Name="[{getKey(iSpan, 106)}]" Condition="getOffset(iSpan, 106) != 255">getNode(iSpan, 106)</Item>
<Item Name="[{getKey(iSpan, 107)}]" Condition="getOffset(iSpan, 107) != 255">getNode(iSpan, 107)</Item>
<Item Name="[{getKey(iSpan, 108)}]" Condition="getOffset(iSpan, 108) != 255">getNode(iSpan, 108)</Item>
<Item Name="[{getKey(iSpan, 109)}]" Condition="getOffset(iSpan, 109) != 255">getNode(iSpan, 109)</Item>
<Item Name="[{getKey(iSpan, 110)}]" Condition="getOffset(iSpan, 110) != 255">getNode(iSpan, 110)</Item>
<Item Name="[{getKey(iSpan, 111)}]" Condition="getOffset(iSpan, 111) != 255">getNode(iSpan, 111)</Item>
<Item Name="[{getKey(iSpan, 112)}]" Condition="getOffset(iSpan, 112) != 255">getNode(iSpan, 112)</Item>
<Item Name="[{getKey(iSpan, 113)}]" Condition="getOffset(iSpan, 113) != 255">getNode(iSpan, 113)</Item>
<Item Name="[{getKey(iSpan, 114)}]" Condition="getOffset(iSpan, 114) != 255">getNode(iSpan, 114)</Item>
<Item Name="[{getKey(iSpan, 115)}]" Condition="getOffset(iSpan, 115) != 255">getNode(iSpan, 115)</Item>
<Item Name="[{getKey(iSpan, 116)}]" Condition="getOffset(iSpan, 116) != 255">getNode(iSpan, 116)</Item>
<Item Name="[{getKey(iSpan, 117)}]" Condition="getOffset(iSpan, 117) != 255">getNode(iSpan, 117)</Item>
<Item Name="[{getKey(iSpan, 118)}]" Condition="getOffset(iSpan, 118) != 255">getNode(iSpan, 118)</Item>
<Item Name="[{getKey(iSpan, 119)}]" Condition="getOffset(iSpan, 119) != 255">getNode(iSpan, 119)</Item>
<Item Name="[{getKey(iSpan, 120)}]" Condition="getOffset(iSpan, 120) != 255">getNode(iSpan, 120)</Item>
<Item Name="[{getKey(iSpan, 121)}]" Condition="getOffset(iSpan, 121) != 255">getNode(iSpan, 121)</Item>
<Item Name="[{getKey(iSpan, 122)}]" Condition="getOffset(iSpan, 122) != 255">getNode(iSpan, 122)</Item>
<Item Name="[{getKey(iSpan, 123)}]" Condition="getOffset(iSpan, 123) != 255">getNode(iSpan, 123)</Item>
<Item Name="[{getKey(iSpan, 124)}]" Condition="getOffset(iSpan, 124) != 255">getNode(iSpan, 124)</Item>
<Item Name="[{getKey(iSpan, 125)}]" Condition="getOffset(iSpan, 125) != 255">getNode(iSpan, 125)</Item>
<Item Name="[{getKey(iSpan, 126)}]" Condition="getOffset(iSpan, 126) != 255">getNode(iSpan, 126)</Item>
<Item Name="[{getKey(iSpan, 127)}]" Condition="getOffset(iSpan, 127) != 255">getNode(iSpan, 127)</Item>
<Exec>iSpan++</Exec>
</If>
</Loop>
</CustomListItems>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QSet&lt;*&gt;">
<DisplayString>{{ size={q_hash.d-&gt;size} }}</DisplayString>
<Expand>
<ExpandedItem>q_hash</ExpandedItem>
</Expand>
</Type>
<Type Name="##NAMESPACE##::QVariant">
<Intrinsic Name="typeId" Expression="*(int*)(&amp;((const ##NAMESPACE##::QtPrivate::QMetaTypeInterface *)(d.packedType &lt;&lt; 2))->typeId)">
</Intrinsic>
<Intrinsic Name="dataStar" Expression="(&amp;(d.data.data))">
</Intrinsic>
<Intrinsic Name="sharedDataStar" Expression="(d.is_shared ? reinterpret_cast&lt;const void *&gt;((size_t)(d.data.shared) + d.data.shared-&gt;offset) : (&amp;(d.data.data)))">
</Intrinsic>
<DisplayString Condition="d.is_null">(null)</DisplayString>
<!-- Static core pointers -->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QObjectStar">QObject*</DisplayString>
<!-- Static core template classes -->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">{*(QMap&lt;QString,QVariant&gt;*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">{*(QList&lt;QVariant&gt;*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">{*(QHash&lt;QString,QVariant&gt;*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantPair">QVariantPair</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">{*(QList&lt;QByteArray&gt;*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">{*(QList&lt;QString&gt;*) sharedDataStar()}</DisplayString>
<!-- Static primitives-->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Bool">{*(bool*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Int">{*(int*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::UInt">{*(unsigned int*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::LongLong">{*(long long*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::ULongLong">{*(unsigned long long*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Double">{*(double*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::VoidStar">{*(void**) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Long">{*(long*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Short">{*(short*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Char">{*(char*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Char16">{*(char16_t*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Char32">{*(char32_t*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::ULong">{*(unsigned long*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::UShort">{*(unsigned short*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::UChar">{*(unsigned char*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Float">{*(float*) dataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::SChar">{*(signed char*) dataStar()}</DisplayString>
<!-- Static core classes -->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QChar">{*(QChar*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QString">{*(QString*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">{*(QByteArray*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">{*(QDate*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">{*(QTime*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDateTime">QDateTime</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUrl">QUrl</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLocale">QLocale</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">{*(QRect*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">{*(QRectF*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">{*(QSize*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">{*(QSizeF*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">{*(QLine*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">{*(QLineF*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">{*(QPoint*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">{*(QPointF*) sharedDataStar()}</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QEasingCurve">EasingCurve</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUuid">Uuid</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRegularExpression">RegularExpression</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonValue">QJsonValue</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonObject">QJsonObject</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonArray">QJsonArray</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonDocument">QJsonDocument</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborValue">QCborValue</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborArray">QCborArray</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborMap">QCborMap</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QModelIndex">ModelIndex</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPersistentModelIndex">QPersistentModelIndex</DisplayString>
<!-- Static gui classes -->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QFont">QFont</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPixmap">QPixmap</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QBrush">QBrush</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QColor">QColor</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPalette">QPalette</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QIcon">QIcon</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QImage">QImage</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygon">QPolygon</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRegion">QRegion</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QBitmap">QBitmap</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCursor">QCursor</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QKeySequence">QKeySequence</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPen">QPen</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTextLength">QTextLength</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTextFormat">QTextFormat</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTransform">QTransform</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QMatrix4x4">QMatrix4x4</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector2D">QVector2D</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector3D">QVector3D</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector4D">QVector4D</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QQuaternion">QQuaternion</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygonF">QPolygonF</DisplayString>
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QColorSpace">QColorSpace</DisplayString>
<!-- Static widget classes -->
<DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizePolicy">QSizePolicy</DisplayString>
<!-- Unhandled : display the typeId-->
<DisplayString>##NAMESPACE##::QMetaType::Type ({typeId()})</DisplayString>
<Expand>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QString">*(QString*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">*(QByteArray*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">*(QDate*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">*(QTime*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">*(QRect*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">*(QRectF*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">*(QSize*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">*(QSizeF*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">*(QLine*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">*(QLineF*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">*(QPoint*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">*(QPointF*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">*(QMap&lt;QString,QVariant&gt;*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">*(QList&lt;QVariant&gt;*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">*(QHash&lt;QString,QVariant&gt;*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">*(QList&lt;QByteArray&gt;*) sharedDataStar()</ExpandedItem>
<ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">*(QList&lt;QString&gt;*) sharedDataStar()</ExpandedItem>
</Expand>
</Type>
</AutoVisualizer>