qmultimedia: add support in genbindings

This commit is contained in:
mappu 2024-11-04 23:15:10 +13:00
parent 62aa3fb25e
commit df7aae6f1b
3 changed files with 52 additions and 0 deletions

View File

@ -409,8 +409,14 @@ func AllowType(p CppParameter, isReturnType bool) error {
"QPlatformWindow", // e.g. qwindow.h, as below
"QPlatformSurface", // e.g. qsurface.h. as below
"QPlatformMenu", // e.g. QMenu_PlatformMenu. Defined in the QPA, could probably expose as uintptr
"QPlatformMediaCaptureSession", // Qt 6 Multimedia qmediacapturesession.h
"QPlatformMediaRecorder", // Qt 6 Multimedia qmediarecorder.h
"QPlatformVideoSink", // Qt 6 Multimedia qvideosink.h
"QTextDocument::ResourceProvider", // Qt 6 typedef for unsupported std::function<QVariant(const QUrl&)>
"QTransform::Affine", // Qt 6 qtransform.h - public method returning private type
"QAbstractAudioBuffer", // Qt 5 Multimedia, this is a private/internal type only
"QAbstractVideoBuffer", // Works in Qt 5, but in Qt 6 Multimedia this type is used in qvideoframe.h but is not defined anywhere (it was later added in Qt 6.8)
"QRhi", // Qt 6 unstable types, used in Multimedia
"____last____":
return ErrTooComplex
}

View File

@ -78,6 +78,22 @@ func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
ClangMatchSameHeaderDefinitionOnly,
)
generate(
"qt/multimedia",
[]string{
// Theoretically, QtMultimediaWidgets and QtMultimedia are different
// packages, but QtMultimedia qcamera.h has a dependency on qvideowidget.
// Bind them together since our base /qt/ package is Widgets anyway.
"/usr/include/x86_64-linux-gnu/qt5/QtMultimedia",
"/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets",
},
AllowAllHeaders,
clangBin,
pkgConfigCflags("Qt5MultimediaWidgets"),
outDir,
ClangMatchSameHeaderDefinitionOnly,
)
// Depends on QtCore/Gui/Widgets, QPrintSupport
generate(
"qt-restricted-extras/qscintilla",
@ -183,4 +199,32 @@ func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
outDir,
ClangMatchSameHeaderDefinitionOnly,
)
// Qt 6 QtMultimedia
generate(
"qt6/multimedia",
[]string{
"/usr/include/x86_64-linux-gnu/qt6/QtMultimedia",
"/usr/include/x86_64-linux-gnu/qt6/QtMultimediaWidgets",
},
AllowAllHeaders,
clangBin,
"--std=c++17 "+pkgConfigCflags("Qt6MultimediaWidgets"),
outDir,
ClangMatchSameHeaderDefinitionOnly,
)
// Qt 6 Spatial Audio (on Debian this is a dependency of Qt6Multimedia)
generate(
"qt6/spatialaudio",
[]string{
"/usr/include/x86_64-linux-gnu/qt6/QtSpatialAudio",
},
AllowAllHeaders,
clangBin,
"--std=c++17 "+pkgConfigCflags("Qt6SpatialAudio"),
outDir,
ClangMatchSameHeaderDefinitionOnly,
)
}

View File

@ -4,7 +4,9 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install --no-install-recommends -qyy \
golang-go \
qtbase5-dev \
qtmultimedia5-dev \
qt6-base-dev \
qt6-multimedia-dev \
libqscintilla2-qt5-dev \
clang \
git \