Merge remote-tracking branch 'origin/release' into stable
Change-Id: Ieb521fb1e9f297a167eea19c771cb5915c01df97
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -29,8 +29,8 @@
|
||||
\example audiodevices
|
||||
\title Audio Devices Example
|
||||
\ingroup multimedia_examples
|
||||
\brief The Audio Devices example shows the application of the audio devices APIs
|
||||
|
||||
\brief The Audio Devices example shows the application of the audio devices
|
||||
APIs.
|
||||
|
||||
This example shows how to create a simple application to list and test
|
||||
the configuration for the various audio devices available on the device
|
||||
@@ -38,6 +38,5 @@
|
||||
|
||||
\image audiodevices.png
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -30,10 +30,10 @@
|
||||
\title AudioEngine Example
|
||||
\ingroup multimedia_examples
|
||||
\brief The Audio Engine example demonstrates 3D sound control using
|
||||
the QtAudioEngine API.
|
||||
the Qt Audio Engine API.
|
||||
|
||||
\image audioengine.png
|
||||
The Audio Engine example demonstrates 3D sound control using the
|
||||
\l{Qt Audio Engine QML Types}{Qt Audio Engine} API.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -37,7 +37,8 @@
|
||||
Qt provides the QAudioInput class to enable audio functionality within
|
||||
a standard application user interface.
|
||||
|
||||
This example calculates the maximum linear value of the input audio from the microphone and displays the output.
|
||||
This example calculates the maximum linear value of the input audio from the
|
||||
microphone and displays the output.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -31,13 +31,14 @@
|
||||
\ingroup multimedia_examples
|
||||
\brief The Audio Output Example show the use of the QAudioOutput API.
|
||||
|
||||
The example demonstrates the basic use cases of the QAudioOutput class.
|
||||
The example demonstrates the basic use cases of the QAudioOutput class from
|
||||
\l{Qt Multimedia}.
|
||||
|
||||
\image audiooutput-example.png
|
||||
|
||||
This example provides a tone generator to supply continuous audio playback.
|
||||
The first button allows pause and resume of the playback, and the second
|
||||
button allows toggling between push and pull modes of operation.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -34,6 +34,12 @@
|
||||
It demonstrates the discovery of the supported devices and codecs and the use
|
||||
of recording functions in the QAudioRecorder class.
|
||||
|
||||
\image audiorecorder.png
|
||||
|
||||
\include examples-run.qdocinc
|
||||
|
||||
\section1 Displaying the Window and Audio Settings
|
||||
|
||||
We display a window for the user to select the appropriate audio input,
|
||||
codec, container, and sample rate. Allow a setting of either quality or
|
||||
bitrate. Finally, the output file can be selected and recording can be
|
||||
@@ -49,7 +55,7 @@
|
||||
\l{QMultimedia::NormalQuality}, while the bitrates are hardcoded
|
||||
into the list.
|
||||
|
||||
\image audiorecorder.png
|
||||
\section1 Recording Audio
|
||||
|
||||
To record audio we simply create a QAudioRecorder object.
|
||||
|
||||
@@ -96,5 +102,3 @@
|
||||
ui->statusbar->showMessage(tr("Recorded %1 sec").arg(duration / 1000));
|
||||
\endcode
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -34,35 +34,22 @@ or video.
|
||||
|
||||
\image qml-camera.png
|
||||
|
||||
This example demonstrates how to use the Qt Multimedia QML API to access
|
||||
camera functions. It shows how to change settings and to capture images.
|
||||
This example demonstrates how to use the
|
||||
\l{Qt Multimedia QML Types}{Qt Multimedia QML API} to access camera functions.
|
||||
It shows how to change settings and to capture images.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
|
||||
\section1 Application Structure
|
||||
|
||||
Most of the QML code supports the user interface for this application with the
|
||||
camera types being mostly found in \e {declarative-camera.qml} and
|
||||
\e {CaptureControls.qml}.
|
||||
|
||||
In \e {declarative-camera.qml} the \l Camera is initialized with an id
|
||||
of \e {camera}, a photo preview is setup, states are implemented for image
|
||||
preview or capture and \l CaptureControls is initialized. The initial
|
||||
\e state is \e PhotoCapture. \l CameraCapture includes a handler, \e onImageCaptured,
|
||||
for the \l {imageCaptured} signal. The handler sets up the application to process
|
||||
the preview including a change in the user interface state. The \l PhotoPreview
|
||||
becomes visible with any key press being picked up by the handler
|
||||
in PhotoPreview and returning the state to \e PhotoCapture.
|
||||
|
||||
\e CaptureControls, which is implemented in \e {CaptureControls.qml},
|
||||
CaptureControls, which is implemented in \e {CaptureControls.qml},
|
||||
generates a column on the right hand side of the screen which includes control
|
||||
buttons for \e focus (not initially visible), \e {capture}, \e {flash modes},
|
||||
\e {white balance}, \e {exposure compensation}, and if a preview is
|
||||
available a \e {preview} button. The last button exits from the application.
|
||||
|
||||
When the Capture button is pressed the \e onClicked handler calls
|
||||
\l {Camera::captureImage()}{captureImage()}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
buttons for focus (not initially visible), capture, flash modes,
|
||||
white balance, exposure compensation, and if a preview is
|
||||
available, a preview button. The last button exits from the application.
|
||||
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -31,8 +31,8 @@
|
||||
\brief Demonstrates the radio functionality
|
||||
\ingroup multimedia_examples
|
||||
|
||||
This examples uses the Qt Multimedia Radio QML type to list the available
|
||||
channels on the FM frequency.
|
||||
This examples uses the \l{Qt Multimedia} \l Radio QML type to list the
|
||||
available channels on the FM frequency.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -59,6 +59,6 @@
|
||||
(FFT) of a segment of audio data. An open-source library,
|
||||
\l{http://ldesoras.free.fr/prod.html}{FFTReal}, against which the
|
||||
application is dynamically linked, is used to compute the transform.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -34,8 +34,6 @@
|
||||
resize; rotate; change aspect ratio) which can be applied to QML \l{VideoOutput}
|
||||
items.
|
||||
|
||||
\section1 Overview
|
||||
|
||||
This example demonstrates the various manipulations (move; resize; rotate;
|
||||
change aspect ratio) which can be applied to QML \l{VideoOutput} items.
|
||||
|
||||
@@ -50,7 +48,9 @@ which moves across the \l{VideoOutput} item.
|
||||
|
||||
\image qmlvideo-overlay.png
|
||||
|
||||
\section1 Application structure
|
||||
\include examples-run.qdocinc
|
||||
|
||||
\section1 Application Structure
|
||||
|
||||
The \l{video/qmlvideo/qml/qmlvideo/main.qml} file creates a UI which includes
|
||||
the following items:
|
||||
@@ -127,7 +127,7 @@ instance, the embedded
|
||||
\l{video/qmlvideo/qml/qmlvideo/Content.qml}{Content} item creates either a
|
||||
\l{MediaPlayer} or a \l{Camera} item.
|
||||
|
||||
\section1 Calculating and displaying QML painting rate
|
||||
\section1 Calculating and Displaying QML Painting Rate
|
||||
|
||||
\input multimedia/doc/src/examples/video-qml-paint-rate.qdocinc
|
||||
|
||||
@@ -145,4 +145,3 @@ object to a JavaScript function, which will eventually call frequencyItem.notify
|
||||
\printuntil SLOT(qmlFramePainted()));
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -34,9 +34,11 @@
|
||||
can be used to apply postprocessing effects, expressed in \c GLSL, to video
|
||||
and camera viewfinder content.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
|
||||
\section1 Overview
|
||||
|
||||
This example shows how a \l {ShaderEffectItem} can be used to apply
|
||||
This example shows how a \l {ShaderEffect} can be used to apply
|
||||
postprocessing effects, expressed in GLSL, to QML \l {VideoOutput} items.
|
||||
|
||||
It also shows how native code can be combined with QML to implement more
|
||||
@@ -73,7 +75,7 @@ for Effect*.qml files in the list above to see the full range.
|
||||
\section1 Application structure
|
||||
|
||||
Shader effects can be applied to video or viewfinder content using
|
||||
\l{ShaderEffectItem}, as shown in the following example, which applies
|
||||
\l{ShaderEffect}, as shown in the following example, which applies
|
||||
a wiggly effect to the content:
|
||||
|
||||
\code
|
||||
@@ -171,7 +173,7 @@ is based on the \l{ShaderEffect}:
|
||||
\skipto import
|
||||
\printuntil /^\}/
|
||||
|
||||
The interface of the \l Effect allows for derived effects to specify the
|
||||
The interface of Effect allows for derived effects to specify the
|
||||
number of parameters which they support (and therefore the number of sliders
|
||||
which should be displayed), and whether a vertical dividing line should be drawn
|
||||
between transformed and untransformed image regions. As an example, here is the
|
||||
@@ -219,4 +221,3 @@ object to a JavaScript function, which will eventually call frequencyItem.notify
|
||||
\printuntil SLOT(qmlFramePainted()));
|
||||
|
||||
*/
|
||||
|
||||
|
||||
30
examples/multimedia/video/qmlvideofx/Info.plist
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIInterfaceOrientation</key>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>qmlvideofx</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.digia.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0"?>
|
||||
<manifest package="org.qtproject.example.qmlvideofx" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="@string/app_name">
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/>
|
||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
||||
<!-- Deploy Qt libs as part of package -->
|
||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
||||
<!-- Run with local libs -->
|
||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
||||
<meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
|
||||
<meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
|
||||
<!-- Messages maps -->
|
||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
||||
<!-- Messages maps -->
|
||||
|
||||
<!-- Splash screen -->
|
||||
<!--
|
||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/>
|
||||
-->
|
||||
<!-- Splash screen -->
|
||||
</activity>
|
||||
</application>
|
||||
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14"/>
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default permissions. -->
|
||||
<!-- %%INSERT_PERMISSIONS -->
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default features. -->
|
||||
<!-- %%INSERT_FEATURES -->
|
||||
|
||||
</manifest>
|
||||
BIN
examples/multimedia/video/qmlvideofx/images/Dropdown_arrows.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/Slider_bar.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/Slider_handle.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/Triangle_Top.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/Triangle_bottom.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/icon_BackArrow.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/icon_Folder.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
examples/multimedia/video/qmlvideofx/images/icon_Menu.png
Normal file
|
After Width: | Height: | Size: 990 B |
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,5 +0,0 @@
|
||||
border.left: 10
|
||||
border.top: 12
|
||||
border.bottom: 12
|
||||
border.right: 10
|
||||
source: titlebar.png
|
||||
|
Before Width: | Height: | Size: 662 B |
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -48,12 +48,6 @@
|
||||
#include "filereader.h"
|
||||
#include "trace.h"
|
||||
|
||||
#ifdef SMALL_SCREEN_LAYOUT
|
||||
static const QLatin1String MainQmlFile("main-smallscreen.qml");
|
||||
#else
|
||||
static const QLatin1String MainQmlFile("main-largescreen.qml");
|
||||
#endif
|
||||
|
||||
#ifdef PERFORMANCEMONITOR_SUPPORT
|
||||
#include "performancemonitordeclarative.h"
|
||||
#endif
|
||||
@@ -99,7 +93,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
QQuickView viewer;
|
||||
|
||||
viewer.setSource(QLatin1String("qrc:///qml/qmlvideofx/") + MainQmlFile);
|
||||
viewer.setSource(QUrl(QLatin1String("qrc:///qml/qmlvideofx/Main.qml")));
|
||||
QQuickItem *rootObject = viewer.rootObject();
|
||||
rootObject->setProperty("fileName", fileName);
|
||||
viewer.rootObject()->setProperty("volume", volume);
|
||||
@@ -128,13 +122,9 @@ int main(int argc, char *argv[])
|
||||
viewer.setTitle("qmlvideofx");
|
||||
viewer.setFlags(Qt::Window | Qt::WindowSystemMenuHint | Qt::WindowTitleHint |
|
||||
Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
|
||||
viewer.setMinimumSize(QSize(600, 400));
|
||||
viewer.setMinimumSize(QSize(640, 360));
|
||||
|
||||
#ifdef SMALL_SCREEN_PHYSICAL
|
||||
viewer.showFullScreen();
|
||||
#else
|
||||
viewer.show();
|
||||
#endif
|
||||
|
||||
// Delay invocation of init until the event loop has started, to work around
|
||||
// a GL context issue on Harmattan: without this, we get the following error
|
||||
|
||||
@@ -43,29 +43,33 @@ import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: textColor
|
||||
radius: 0.25 * height
|
||||
color: "transparent"
|
||||
height: itemHeight
|
||||
width: itemWidth
|
||||
|
||||
property string text
|
||||
property color bgColor: "white"
|
||||
property color bgColorSelected: "red"
|
||||
property color textColor: "black"
|
||||
property color bgColor: "transparent"
|
||||
property color bgColorSelected: "#14aaff"
|
||||
property color textColor: "white"
|
||||
property alias enabled: mouseArea.enabled
|
||||
property bool active: true
|
||||
property alias horizontalAlign: text.horizontalAlignment
|
||||
|
||||
signal clicked
|
||||
|
||||
Rectangle {
|
||||
anchors { fill: parent; margins: 1 }
|
||||
color: mouseArea.pressed ? bgColorSelected : bgColor
|
||||
radius: 0.25 * height
|
||||
radius: 0.1 * height
|
||||
|
||||
Text {
|
||||
id: text
|
||||
anchors.centerIn: parent
|
||||
clip: true
|
||||
text: root.text
|
||||
font.pixelSize: 0.5 * parent.height
|
||||
anchors { fill: parent; margins: scaledMargin }
|
||||
font.pixelSize: fontSize
|
||||
color: mouseArea.pressed ? bgColor : textColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
@@ -75,6 +79,7 @@ Rectangle {
|
||||
onClicked: {
|
||||
root.clicked()
|
||||
}
|
||||
enabled: active
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,11 +39,10 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "black"
|
||||
property alias effect: effectLoader.item
|
||||
property alias gripSize: divider.gripSize
|
||||
property string effectSource
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
|
||||
Image {
|
||||
fillMode: Image.PreserveAspectFit
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,13 +39,14 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
import QtMultimedia 5.0
|
||||
|
||||
VideoOutput {
|
||||
source: mediaPlayer
|
||||
property alias mediaSource: mediaPlayer.source
|
||||
property alias volume: mediaPlayer.volume
|
||||
property bool isRunning: true
|
||||
|
||||
MediaPlayer {
|
||||
id: mediaPlayer
|
||||
@@ -55,5 +56,21 @@ VideoOutput {
|
||||
}
|
||||
|
||||
function play() { mediaPlayer.play() }
|
||||
function pause() { mediaPlayer.pause() }
|
||||
function stop() { mediaPlayer.stop() }
|
||||
|
||||
function toggleplay() {
|
||||
if (isRunning) {
|
||||
pause()
|
||||
isRunning = false
|
||||
} else {
|
||||
play()
|
||||
isRunning = true
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: toggleplay()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,39 +39,56 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Based on http://rastergrid.com/blog/downloads/frei-chen-edge-detector/
|
||||
import QtQuick 2.0
|
||||
|
||||
#version 130
|
||||
uniform sampler2D source;
|
||||
uniform float dividerValue;
|
||||
uniform float weight;
|
||||
mat3 G[2] = mat3[](
|
||||
mat3( 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 ),
|
||||
mat3( 1.0, 0.0, -1.0, 2.0, 0.0, -2.0, 1.0, 0.0, -1.0 )
|
||||
);
|
||||
uniform lowp float qt_Opacity;
|
||||
in vec2 qt_TexCoord0;
|
||||
out vec4 FragmentColor;
|
||||
void main() {
|
||||
vec2 uv = qt_TexCoord0.xy;
|
||||
vec4 c = vec4(0.0);
|
||||
if (uv.x < dividerValue) {
|
||||
mat3 intensity;
|
||||
float conv[2];
|
||||
vec3 sample;
|
||||
for (int i=0; i<3; ++i) {
|
||||
for (int j=0; j<3; ++j) {
|
||||
sample = texelFetch(source, ivec2(gl_FragCoord) + ivec2(i-1, j-1), 0).rgb;
|
||||
intensity[i][j] = length(sample) * weight;
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "transparent"
|
||||
radius: 5
|
||||
property alias value: grip.value
|
||||
property color gripColor: "transparent"
|
||||
property real gripSize: 20
|
||||
property real gripTolerance: 3.0
|
||||
property real increment: 0.1
|
||||
property bool enabled: true
|
||||
property string imageSource: "qrc:/images/Triangle_Top.png"
|
||||
|
||||
Rectangle {
|
||||
id: grip
|
||||
property real value: 0.5
|
||||
x: (value * parent.width) - width/2
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: root.gripTolerance * root.gripSize
|
||||
height: width
|
||||
radius: width/2
|
||||
color: "transparent"
|
||||
|
||||
Image {
|
||||
id: sliderhandleimage
|
||||
source: imageSource
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
enabled: root.enabled
|
||||
anchors.fill: parent
|
||||
drag {
|
||||
target: grip
|
||||
axis: Drag.XAxis
|
||||
minimumX: -parent.width/2
|
||||
maximumX: root.width - parent.width/2
|
||||
}
|
||||
onPositionChanged: {
|
||||
if (drag.active)
|
||||
updatePosition()
|
||||
}
|
||||
onReleased: {
|
||||
updatePosition()
|
||||
}
|
||||
function updatePosition() {
|
||||
value = (grip.x + grip.width/2) / grip.parent.width
|
||||
}
|
||||
}
|
||||
for (int i=0; i<2; ++i) {
|
||||
float dp3 = dot(G[i][0], intensity[0]) + dot(G[i][1], intensity[1]) + dot(G[i][2], intensity[2]);
|
||||
conv[i] = dp3 * dp3;
|
||||
}
|
||||
c = vec4(0.5 * sqrt(conv[0]*conv[0] + conv[1]*conv[1]));
|
||||
} else {
|
||||
c = texture2D(source, qt_TexCoord0);
|
||||
}
|
||||
FragmentColor = qt_Opacity * c;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,7 +39,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
@@ -53,21 +53,34 @@ Rectangle {
|
||||
id: line
|
||||
anchors { top: parent.top; bottom: parent.bottom }
|
||||
x: parent.value * parent.width - (width / 2)
|
||||
width: 2
|
||||
color: "red"
|
||||
width: 4
|
||||
color: "#14aaff"
|
||||
}
|
||||
|
||||
Slider {
|
||||
// topgrip
|
||||
Curtain {
|
||||
id: slider
|
||||
increment: 0.0
|
||||
lineColor: "transparent"
|
||||
fillColor: "transparent"
|
||||
gripColor: "red"
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: gripSize / 2
|
||||
topMargin: (gripSize / 2) + 5
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
onValueChanged: slider2.value = slider.value
|
||||
}
|
||||
|
||||
// bottomgrip
|
||||
Curtain {
|
||||
id: slider2
|
||||
increment: 0.0
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
bottomMargin: (gripSize / 2) + 5
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
imageSource: "qrc:/images/Triangle_bottom.png"
|
||||
onValueChanged: slider.value = slider2.value
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "grid spacing"
|
||||
name: "Grid Spacing"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "threshold"
|
||||
name: "Threshold"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ Item {
|
||||
property real dividerValue: 0.5
|
||||
property ListModel parameters: ListModel {
|
||||
ListElement {
|
||||
name: "radius"
|
||||
name: "Radius"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,11 +44,11 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "hue"
|
||||
name: "Hue"
|
||||
value: 0.5
|
||||
}
|
||||
ListElement {
|
||||
name: "width"
|
||||
name: "Width"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,11 +46,11 @@ Effect {
|
||||
divider: false
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "radius"
|
||||
name: "Radius"
|
||||
value: 0.5
|
||||
}
|
||||
ListElement {
|
||||
name: "diffraction"
|
||||
name: "Diffraction"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ Effect {
|
||||
divider: false
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "extent"
|
||||
name: "Extent"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "granularity"
|
||||
name: "Granularity"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "gamma"
|
||||
name: "Gamma"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,11 +44,11 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "amplitude"
|
||||
name: "Amplitude"
|
||||
value: 0.5
|
||||
}
|
||||
ListElement {
|
||||
name: "frequency"
|
||||
name: "Frequency"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -41,16 +41,27 @@
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "threshold"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
// Transform slider values, and bind result to shader uniforms
|
||||
property real weight: parameters.get(0).value
|
||||
|
||||
fragmentShaderFilename: "sobeledgedetection2.fsh"
|
||||
ListModel {
|
||||
id: sources
|
||||
ListElement { name: "No effect"; source: "EffectPassThrough.qml" }
|
||||
ListElement { name: "Billboard"; source: "EffectBillboard.qml" }
|
||||
ListElement { name: "Black & white"; source: "EffectBlackAndWhite.qml" }
|
||||
ListElement { name: "Blur"; source: "EffectGaussianBlur.qml" }
|
||||
ListElement { name: "Edge detection"; source: "EffectSobelEdgeDetection1.qml" }
|
||||
ListElement { name: "Emboss"; source: "EffectEmboss.qml" }
|
||||
ListElement { name: "Glow"; source: "EffectGlow.qml" }
|
||||
ListElement { name: "Isolate"; source: "EffectIsolate.qml" }
|
||||
//ListElement { name: "Magnify"; source: "EffectMagnify.qml" }
|
||||
ListElement { name: "Page curl"; source: "EffectPageCurl.qml" }
|
||||
ListElement { name: "Pixelate"; source: "EffectPixelate.qml" }
|
||||
ListElement { name: "Posterize"; source: "EffectPosterize.qml" }
|
||||
ListElement { name: "Ripple"; source: "EffectRipple.qml" }
|
||||
ListElement { name: "Sepia"; source: "EffectSepia.qml" }
|
||||
ListElement { name: "Sharpen"; source: "EffectSharpen.qml" }
|
||||
ListElement { name: "Shockwave"; source: "EffectShockwave.qml" }
|
||||
ListElement { name: "Tilt shift"; source: "EffectTiltShift.qml" }
|
||||
ListElement { name: "Toon"; source: "EffectToon.qml" }
|
||||
ListElement { name: "Warhol"; source: "EffectWarhol.qml" }
|
||||
ListElement { name: "Wobble"; source: "EffectWobble.qml" }
|
||||
ListElement { name: "Vignette"; source: "EffectVignette.qml" }
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** 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 Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
property int itemHeight: 25
|
||||
property string effectSource: ""
|
||||
|
||||
signal clicked
|
||||
|
||||
QtObject {
|
||||
id: d
|
||||
property Item selectedItem
|
||||
}
|
||||
|
||||
ListModel {
|
||||
id: sources
|
||||
ListElement { name: "No effect"; source: "EffectPassThrough.qml" }
|
||||
ListElement { name: "Billboard"; source: "EffectBillboard.qml" }
|
||||
ListElement { name: "Black & white"; source: "EffectBlackAndWhite.qml" }
|
||||
ListElement { name: "Blur"; source: "EffectGaussianBlur.qml" }
|
||||
ListElement { name: "Edge detection"; source: "EffectSobelEdgeDetection1.qml" }
|
||||
//ListElement { name: "Edge detection (Sobel, #2)"; source: "EffectSobelEdgeDetection2.qml" }
|
||||
ListElement { name: "Emboss"; source: "EffectEmboss.qml" }
|
||||
ListElement { name: "Glow"; source: "EffectGlow.qml" }
|
||||
ListElement { name: "Isolate"; source: "EffectIsolate.qml" }
|
||||
ListElement { name: "Magnify"; source: "EffectMagnify.qml" }
|
||||
ListElement { name: "Page curl"; source: "EffectPageCurl.qml" }
|
||||
ListElement { name: "Pixelate"; source: "EffectPixelate.qml" }
|
||||
ListElement { name: "Posterize"; source: "EffectPosterize.qml" }
|
||||
ListElement { name: "Ripple"; source: "EffectRipple.qml" }
|
||||
ListElement { name: "Sepia"; source: "EffectSepia.qml" }
|
||||
ListElement { name: "Sharpen"; source: "EffectSharpen.qml" }
|
||||
ListElement { name: "Shockwave"; source: "EffectShockwave.qml" }
|
||||
ListElement { name: "Tilt shift"; source: "EffectTiltShift.qml" }
|
||||
ListElement { name: "Toon"; source: "EffectToon.qml" }
|
||||
ListElement { name: "Warhol"; source: "EffectWarhol.qml" }
|
||||
ListElement { name: "Wobble"; source: "EffectWobble.qml" }
|
||||
ListElement { name: "Vignette"; source: "EffectVignette.qml" }
|
||||
}
|
||||
|
||||
Component {
|
||||
id: sourceDelegate
|
||||
Item {
|
||||
id: sourceDelegateItem
|
||||
width: root.width
|
||||
height: itemHeight
|
||||
|
||||
Button {
|
||||
id: sourceSelectorItem
|
||||
anchors.centerIn: parent
|
||||
width: 0.9 * parent.width
|
||||
height: 0.8 * itemHeight
|
||||
text: name
|
||||
onClicked: {
|
||||
if (d.selectedItem)
|
||||
d.selectedItem.state = "baseState"
|
||||
d.selectedItem = sourceDelegateItem
|
||||
d.selectedItem.state = "selected"
|
||||
effectSource = source
|
||||
root.clicked()
|
||||
}
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "selected"
|
||||
PropertyChanges {
|
||||
target: sourceSelectorItem
|
||||
bgColor: "#ff8888"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Component.onCompleted: {
|
||||
if (name == "No effect") {
|
||||
state = "selected"
|
||||
d.selectedItem = sourceDelegateItem
|
||||
}
|
||||
}
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: "*"
|
||||
to: "*"
|
||||
ColorAnimation {
|
||||
properties: "color"
|
||||
easing.type: Easing.OutQuart
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Flickable {
|
||||
anchors.fill: parent
|
||||
contentHeight: (itemHeight * sources.count) + layout.anchors.topMargin + layout.spacing
|
||||
clip: true
|
||||
|
||||
Column {
|
||||
id: layout
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
topMargin: 10
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: sources
|
||||
delegate: sourceDelegate
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "sharpness"
|
||||
name: "Sharpness"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ Effect {
|
||||
id: root
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "amplitude"
|
||||
name: "Amplitude"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "threshold"
|
||||
name: "Threshold"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "threshold"
|
||||
name: "Threshold"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ import QtQuick 2.0
|
||||
Effect {
|
||||
parameters: ListModel {
|
||||
ListElement {
|
||||
name: "amplitude"
|
||||
name: "Amplitude"
|
||||
value: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,12 +39,13 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import Qt.labs.folderlistmodel 2.0
|
||||
import QtQuick 2.1
|
||||
import Qt.labs.folderlistmodel 2.1
|
||||
|
||||
Rectangle {
|
||||
id: fileBrowser
|
||||
color: "transparent"
|
||||
z: 4
|
||||
|
||||
property string folder
|
||||
property bool shown: loader.sourceComponent
|
||||
@@ -75,12 +76,12 @@ Rectangle {
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "white"
|
||||
color: "black"
|
||||
property bool showFocusHighlight: false
|
||||
property variant folders: folders1
|
||||
property variant view: view1
|
||||
property alias folder: folders1.folder
|
||||
property color textColor: "black"
|
||||
property color textColor: "white"
|
||||
|
||||
FolderListModel {
|
||||
id: folders1
|
||||
@@ -112,7 +113,7 @@ Rectangle {
|
||||
fileBrowser.selectFile(path)
|
||||
}
|
||||
width: root.width
|
||||
height: 52
|
||||
height: itemHeight
|
||||
color: "transparent"
|
||||
|
||||
Rectangle {
|
||||
@@ -126,10 +127,12 @@ Rectangle {
|
||||
}
|
||||
|
||||
Item {
|
||||
width: 48; height: 48
|
||||
width: itemHeight; height: itemHeight
|
||||
Image {
|
||||
source: "qrc:/images/folder.png"
|
||||
anchors.centerIn: parent
|
||||
source: "qrc:/images/icon_Folder.png"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
anchors.fill: parent
|
||||
anchors.margins: scaledMargin
|
||||
visible: folders.isFolder(index)
|
||||
}
|
||||
}
|
||||
@@ -138,8 +141,8 @@ Rectangle {
|
||||
id: nameText
|
||||
anchors.fill: parent; verticalAlignment: Text.AlignVCenter
|
||||
text: fileName
|
||||
anchors.leftMargin: 54
|
||||
font.pixelSize: 32
|
||||
anchors.leftMargin: itemHeight + scaledMargin
|
||||
font.pixelSize: fontSize
|
||||
color: (wrapper.ListView.isCurrentItem && root.showFocusHighlight) ? palette.highlightedText : textColor
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
@@ -262,56 +265,45 @@ Rectangle {
|
||||
Keys.onPressed: root.keyPressed(event.key)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Button {
|
||||
id: cancelButton
|
||||
width: 100
|
||||
height: titleBar.height - 7
|
||||
color: "black"
|
||||
anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter }
|
||||
|
||||
Text {
|
||||
anchors { fill: parent; margins: 4 }
|
||||
width: itemWidth
|
||||
height: itemHeight
|
||||
color: "#353535"
|
||||
anchors { bottom: parent.bottom; right: parent.right; margins: 5 * scaledMargin }
|
||||
text: "Cancel"
|
||||
color: "white"
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: 20
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
horizontalAlign: Text.AlignHCenter
|
||||
onClicked: fileBrowser.selectFile("")
|
||||
}
|
||||
}
|
||||
|
||||
Keys.onPressed: {
|
||||
root.keyPressed(event.key);
|
||||
if (event.key == Qt.Key_Return || event.key == Qt.Key_Select || event.key == Qt.Key_Right) {
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Select || event.key === Qt.Key_Right) {
|
||||
view.currentItem.launch();
|
||||
event.accepted = true;
|
||||
} else if (event.key == Qt.Key_Left) {
|
||||
} else if (event.key === Qt.Key_Left) {
|
||||
up();
|
||||
}
|
||||
}
|
||||
|
||||
BorderImage {
|
||||
source: "qrc:/images/titlebar.sci";
|
||||
// titlebar
|
||||
Rectangle {
|
||||
color: "black"
|
||||
width: parent.width;
|
||||
height: 52
|
||||
y: -7
|
||||
height: itemHeight
|
||||
id: titleBar
|
||||
|
||||
Rectangle {
|
||||
id: upButton
|
||||
width: 48
|
||||
height: titleBar.height - 7
|
||||
width: titleBar.height
|
||||
height: titleBar.height
|
||||
color: "transparent"
|
||||
Image { anchors.centerIn: parent; source: "qrc:/images/up.png" }
|
||||
MouseArea { id: upRegion; anchors.centerIn: parent
|
||||
width: 56
|
||||
height: 56
|
||||
onClicked: up()
|
||||
}
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.margins: scaledMargin
|
||||
|
||||
Image { anchors.fill: parent; anchors.margins: scaledMargin; source: "qrc:/images/icon_BackArrow.png" }
|
||||
MouseArea { id: upRegion; anchors.fill: parent; onClicked: up() }
|
||||
states: [
|
||||
State {
|
||||
name: "pressed"
|
||||
@@ -321,23 +313,23 @@ Rectangle {
|
||||
]
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "gray"
|
||||
x: 48
|
||||
width: 1
|
||||
height: 44
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.left: upButton.right; anchors.right: parent.right; height: parent.height
|
||||
anchors.leftMargin: 4; anchors.rightMargin: 4
|
||||
anchors.leftMargin: 10; anchors.rightMargin: 4
|
||||
text: folders.folder
|
||||
color: "white"
|
||||
elide: Text.ElideLeft; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: 32
|
||||
elide: Text.ElideLeft; horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: fontSize
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "#353535"
|
||||
width: parent.width
|
||||
height: 1
|
||||
anchors.top: titleBar.bottom
|
||||
}
|
||||
|
||||
function down(path) {
|
||||
if (folders == folders1) {
|
||||
view = view2
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,56 +39,95 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "white"
|
||||
property int buttonHeight: 35
|
||||
property int topMargin: 0
|
||||
|
||||
color: "#151515"
|
||||
signal openCamera
|
||||
signal openImage
|
||||
signal openVideo
|
||||
signal openCamera
|
||||
signal close
|
||||
|
||||
Rectangle {
|
||||
anchors {
|
||||
top: parent.top;
|
||||
topMargin: root.topMargin
|
||||
bottom: parent.bottom;
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
width: 0.9 * parent.width
|
||||
color: "transparent"
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
spacing: 5
|
||||
Button {
|
||||
text: "Open image"
|
||||
height: buttonHeight
|
||||
width: parent.width
|
||||
onClicked: root.openImage()
|
||||
spacing: 10
|
||||
Rectangle {
|
||||
height: itemHeight
|
||||
width: itemHeight
|
||||
color: "transparent"
|
||||
anchors.right: parent.right
|
||||
Image {
|
||||
id: menu
|
||||
source: "qrc:///images/icon_Menu.png"
|
||||
anchors {
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
margins: scaledMargin
|
||||
}
|
||||
Button {
|
||||
text: "Open video"
|
||||
height: buttonHeight
|
||||
width: parent.width
|
||||
onClicked: root.openVideo()
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: fileOpen.state == "expanded" ? fileOpen.state = "collapsed" : fileOpen.state = "expanded"
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
width: 0.9 * parent.width
|
||||
height: 1
|
||||
color: "#353535"
|
||||
anchors.left: parent.left
|
||||
}
|
||||
Button {
|
||||
text: "Start camera"
|
||||
height: buttonHeight
|
||||
height: itemHeight
|
||||
width: parent.width
|
||||
onClicked: root.openCamera()
|
||||
active: fileOpen.state == "expanded"
|
||||
}
|
||||
Rectangle {
|
||||
width: 0.9 * parent.width
|
||||
height: 1
|
||||
color: "#353535"
|
||||
anchors.left: parent.left
|
||||
}
|
||||
Button {
|
||||
text: "Open image"
|
||||
height: itemHeight
|
||||
width: parent.width
|
||||
onClicked: root.openImage()
|
||||
active: fileOpen.state == "expanded"
|
||||
}
|
||||
Rectangle {
|
||||
width: 0.9 * parent.width
|
||||
height: 1
|
||||
color: "#353535"
|
||||
anchors.left: parent.left
|
||||
}
|
||||
Button {
|
||||
text: "Open video"
|
||||
height: itemHeight
|
||||
width: parent.width
|
||||
onClicked: root.openVideo()
|
||||
active: fileOpen.state == "expanded"
|
||||
}
|
||||
Rectangle {
|
||||
width: 0.9 * parent.width
|
||||
height: 1
|
||||
color: "#353535"
|
||||
anchors.left: parent.left
|
||||
}
|
||||
Button {
|
||||
text: "Reset"
|
||||
height: buttonHeight
|
||||
height: itemHeight
|
||||
width: parent.width
|
||||
onClicked: root.close()
|
||||
active: fileOpen.state == "expanded"
|
||||
}
|
||||
Rectangle {
|
||||
width: 0.9 * parent.width
|
||||
height: 1
|
||||
color: "#353535"
|
||||
anchors.left: parent.left
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
287
examples/multimedia/video/qmlvideofx/qml/qmlvideofx/Main.qml
Normal file
@@ -0,0 +1,287 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** 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 Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "black"
|
||||
property string fileName
|
||||
property alias volume: content.volume
|
||||
property bool perfMonitorsLogging: false
|
||||
property bool perfMonitorsVisible: false
|
||||
property int pixDens: Math.ceil(Screen.pixelDensity)
|
||||
property int itemWidth: 25 * pixDens
|
||||
property int itemHeight: 10 * pixDens
|
||||
property int windowWidth: Screen.desktopAvailableWidth
|
||||
property int windowHeight: Screen.desktopAvailableHeight
|
||||
property int scaledMargin: 2 * pixDens
|
||||
property int fontSize: 5 * pixDens
|
||||
|
||||
QtObject {
|
||||
id: d
|
||||
property real gripSize: 20
|
||||
}
|
||||
|
||||
Content {
|
||||
id: content
|
||||
color: "transparent"
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
bottom: parameterPanel.top
|
||||
margins: scaledMargin
|
||||
leftMargin: scaledMargin + itemHeight
|
||||
}
|
||||
gripSize: d.gripSize
|
||||
}
|
||||
|
||||
ParameterPanel {
|
||||
id: parameterPanel
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: listview.left
|
||||
bottom: parent.bottom
|
||||
margins: scaledMargin
|
||||
leftMargin: scaledMargin + itemHeight
|
||||
}
|
||||
gripSize: d.gripSize
|
||||
height: root.itemHeight * 2.5
|
||||
width: root.itemWidth * 3
|
||||
|
||||
}
|
||||
|
||||
|
||||
Button {
|
||||
id: effectName
|
||||
anchors {
|
||||
right: parent.right
|
||||
bottom: perfHolder.top
|
||||
top: content.bottom
|
||||
margins: scaledMargin
|
||||
}
|
||||
|
||||
text: "No effect"
|
||||
width: itemWidth * 2
|
||||
onClicked: {
|
||||
effectName.visible = false
|
||||
listview.visible = true
|
||||
}
|
||||
color: "#303030"
|
||||
}
|
||||
|
||||
|
||||
ListView {
|
||||
id: listview
|
||||
width: itemWidth * 2
|
||||
anchors {
|
||||
right: parent.right
|
||||
bottom: perfHolder.top
|
||||
top: parent.top
|
||||
margins: scaledMargin
|
||||
}
|
||||
visible: false
|
||||
|
||||
model: EffectSelectionList {}
|
||||
delegate: effectDelegate
|
||||
|
||||
highlight: Rectangle { color: "#14aaff"; radius: 5 }
|
||||
highlightFollowsCurrentItem: true
|
||||
highlightRangeMode: ListView.StrictlyEnforceRange
|
||||
clip: true
|
||||
focus: true
|
||||
|
||||
Component {
|
||||
id: effectDelegate
|
||||
Button {
|
||||
text: name
|
||||
width: itemWidth * 2
|
||||
onClicked: {
|
||||
content.effectSource = source
|
||||
listview.visible = false
|
||||
effectName.text = name
|
||||
effectName.visible = true
|
||||
parameterPanel.model = content.effect.parameters
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: perfHolder
|
||||
color: "transparent"
|
||||
anchors {
|
||||
right: parent.right
|
||||
bottom: parent.bottom
|
||||
margins: scaledMargin
|
||||
}
|
||||
height: root.itemHeight * 1.5
|
||||
width: root.itemWidth
|
||||
|
||||
Loader {
|
||||
id: performanceLoader
|
||||
function init() {
|
||||
console.log("[qmlvideofx] performanceLoader.init logging " + root.perfMonitorsLogging + " visible " + root.perfMonitorsVisible)
|
||||
var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible
|
||||
source = enabled ? "../performancemonitor/PerformanceItem.qml" : ""
|
||||
}
|
||||
onLoaded: {
|
||||
item.parent = perfHolder
|
||||
item.anchors.top = perfHolder.top
|
||||
item.anchors.bottom = perfHolder.bottom
|
||||
item.anchors.left = perfHolder.left
|
||||
item.anchors.right = perfHolder.right
|
||||
item.logging = root.perfMonitorsLogging
|
||||
item.displayed = root.perfMonitorsVisible
|
||||
item.init()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FileOpen {
|
||||
id: fileOpen
|
||||
state: "collapsed"
|
||||
anchors {
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
margins: scaledMargin
|
||||
}
|
||||
width: itemHeight + scaledMargin
|
||||
z: 2
|
||||
opacity: 0.9
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "expanded"
|
||||
PropertyChanges {
|
||||
target: fileOpen
|
||||
width: itemWidth * 1.5
|
||||
opacity: 0.8
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "collapsed"
|
||||
PropertyChanges {
|
||||
target: fileOpen
|
||||
width: itemHeight + scaledMargin
|
||||
opacity: 0.9
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
NumberAnimation { target: fileOpen; property: "width"; duration: 400 }
|
||||
NumberAnimation { target: fileOpen; property: "opacity"; duration: 400 }
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: imageFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openImage)
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: videoFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openVideo)
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
fileOpen.openImage.connect(openImage)
|
||||
fileOpen.openVideo.connect(openVideo)
|
||||
fileOpen.openCamera.connect(openCamera)
|
||||
fileOpen.close.connect(close)
|
||||
}
|
||||
|
||||
function init() {
|
||||
if (Qt.platform.os === "linux" || Qt.platform.os === "windows" || Qt.platform.os === "osx" || Qt.platform.os === "unix") {
|
||||
if (Screen.desktopAvailableWidth > 1280) {
|
||||
windowWidth = 1280
|
||||
}
|
||||
if (Screen.desktopAvailableHeight > 720) {
|
||||
windowHeight = 720
|
||||
}
|
||||
}
|
||||
|
||||
height = windowHeight
|
||||
width = windowWidth
|
||||
|
||||
console.log("[qmlvideofx] root.init")
|
||||
console.log("Height: ", Screen.desktopAvailableHeight)
|
||||
console.log("Width: ", Screen.desktopAvailableWidth)
|
||||
console.log("Pixels per mm: ", Math.ceil(Screen.pixelDensity))
|
||||
console.log("Orientation: ", Screen.orientation)
|
||||
imageFileBrowser.folder = imagePath
|
||||
videoFileBrowser.folder = videoPath
|
||||
content.init()
|
||||
performanceLoader.init()
|
||||
if (fileName != "")
|
||||
content.openVideo(fileName)
|
||||
}
|
||||
|
||||
function qmlFramePainted() {
|
||||
if (performanceLoader.item)
|
||||
performanceLoader.item.qmlFramePainted()
|
||||
}
|
||||
|
||||
function openImage() {
|
||||
imageFileBrowser.show()
|
||||
}
|
||||
|
||||
function openVideo() {
|
||||
videoFileBrowser.show()
|
||||
}
|
||||
|
||||
function openCamera() {
|
||||
content.openCamera()
|
||||
}
|
||||
|
||||
function close() {
|
||||
content.init()
|
||||
}
|
||||
}
|
||||
@@ -47,17 +47,12 @@ Rectangle {
|
||||
height: view.model.count * sliderHeight
|
||||
property color lineColor: "black"
|
||||
property real gripSize: 25
|
||||
property real spacing: 10
|
||||
property real sliderHeight: 40
|
||||
property real spacing: 20
|
||||
property real sliderHeight: 60
|
||||
|
||||
property ListModel model: ListModel { }
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "black"
|
||||
opacity: 0.5
|
||||
radius: 10
|
||||
}
|
||||
anchors.topMargin: 10
|
||||
|
||||
Component {
|
||||
id: editDelegate
|
||||
@@ -77,10 +72,10 @@ Rectangle {
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
}
|
||||
font.pixelSize: 0.5 * parent.height
|
||||
font.pixelSize: fontSize
|
||||
horizontalAlignment: Text.AlignRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: 150
|
||||
width: 8 * fontSize
|
||||
}
|
||||
|
||||
Slider {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
@@ -39,48 +39,46 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtQuick 2.1
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "transparent"
|
||||
radius: 5
|
||||
property alias value: grip.value
|
||||
property color fillColor: "white"
|
||||
property color lineColor: "black"
|
||||
property color gripColor: "white"
|
||||
property real gripSize: 20
|
||||
property color fillColor: "#14aaff"
|
||||
property real gripSize: 40
|
||||
property real gripTolerance: 3.0
|
||||
property real increment: 0.1
|
||||
property bool enabled: true
|
||||
|
||||
Rectangle {
|
||||
anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter }
|
||||
height: 3
|
||||
color: displayedColor(root.lineColor)
|
||||
id: slider
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
height: 10
|
||||
color: "transparent"
|
||||
|
||||
Rectangle {
|
||||
BorderImage {
|
||||
id: sliderbarimage
|
||||
source: "qrc:/images/Slider_bar.png"
|
||||
anchors { fill: parent; margins: 1 }
|
||||
border.right: 5
|
||||
border.left: 5
|
||||
}
|
||||
Rectangle {
|
||||
height: parent.height -2
|
||||
anchors.left: parent.left
|
||||
anchors.right: grip.horizontalCenter
|
||||
color: root.fillColor
|
||||
radius: 3
|
||||
border.width: 1
|
||||
border.color: Qt.darker(color, 1.3)
|
||||
opacity: 0.8
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
enabled: root.enabled
|
||||
onClicked: {
|
||||
if (parent.width) {
|
||||
var newValue = mouse.x / parent.width
|
||||
if (Math.abs(newValue - parent.value) > parent.increment) {
|
||||
if (newValue > parent.value)
|
||||
parent.value = Math.min(1.0, parent.value + parent.increment)
|
||||
else
|
||||
parent.value = Math.max(0.0, parent.value - parent.increment)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: grip
|
||||
property real value: 0.5
|
||||
@@ -91,6 +89,12 @@ Rectangle {
|
||||
radius: width/2
|
||||
color: "transparent"
|
||||
|
||||
Image {
|
||||
id: sliderhandleimage
|
||||
source: "qrc:/images/Slider_handle.png"
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
enabled: root.enabled
|
||||
@@ -109,21 +113,10 @@ Rectangle {
|
||||
updatePosition()
|
||||
}
|
||||
function updatePosition() {
|
||||
value = (grip.x + grip.width/2) / grip.parent.width
|
||||
value = (grip.x + grip.width/2) / slider.width
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.centerIn: parent
|
||||
width: root.gripSize
|
||||
height: width
|
||||
radius: width/2
|
||||
color: root.gripColor
|
||||
}
|
||||
}
|
||||
|
||||
function displayedColor(c) {
|
||||
var tint = Qt.rgba(c.r, c.g, c.b, 0.25)
|
||||
return enabled ? c : Qt.tint(c, tint)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,186 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** 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 Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
width: 900
|
||||
height: 600
|
||||
color: "grey"
|
||||
property string fileName
|
||||
property alias volume: content.volume
|
||||
property bool perfMonitorsLogging: false
|
||||
property bool perfMonitorsVisible: false
|
||||
|
||||
QtObject {
|
||||
id: d
|
||||
property real gripSize: 20
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: inner
|
||||
anchors.fill: parent
|
||||
color: "grey"
|
||||
|
||||
Content {
|
||||
id: content
|
||||
anchors {
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
right: effectSelectionPanel.left
|
||||
margins: 5
|
||||
}
|
||||
gripSize: d.gripSize
|
||||
width: 600
|
||||
height: 600
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: performanceLoader
|
||||
function init() {
|
||||
console.log("[qmlvideofx] performanceLoader.init logging " + root.perfMonitorsLogging + " visible " + root.perfMonitorsVisible)
|
||||
var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible
|
||||
source = enabled ? "../performancemonitor/PerformanceItem.qml" : ""
|
||||
}
|
||||
onLoaded: {
|
||||
item.parent = content
|
||||
item.anchors.top = content.top
|
||||
item.anchors.left = content.left
|
||||
item.anchors.right = content.right
|
||||
item.logging = root.perfMonitorsLogging
|
||||
item.displayed = root.perfMonitorsVisible
|
||||
item.init()
|
||||
}
|
||||
}
|
||||
|
||||
ParameterPanel {
|
||||
id: parameterPanel
|
||||
anchors {
|
||||
left: parent.left
|
||||
bottom: parent.bottom
|
||||
right: effectSelectionPanel.left
|
||||
margins: 20
|
||||
}
|
||||
gripSize: d.gripSize
|
||||
}
|
||||
|
||||
EffectSelectionPanel {
|
||||
id: effectSelectionPanel
|
||||
anchors {
|
||||
top: parent.top
|
||||
bottom: fileOpen.top
|
||||
right: parent.right
|
||||
margins: 5
|
||||
}
|
||||
width: 300
|
||||
itemHeight: 40
|
||||
onEffectSourceChanged: {
|
||||
content.effectSource = effectSource
|
||||
parameterPanel.model = content.effect.parameters
|
||||
}
|
||||
}
|
||||
|
||||
FileOpen {
|
||||
id: fileOpen
|
||||
anchors {
|
||||
right: parent.right
|
||||
bottom: parent.bottom
|
||||
margins: 5
|
||||
}
|
||||
width: effectSelectionPanel.width
|
||||
height: 165
|
||||
buttonHeight: 32
|
||||
topMargin: 10
|
||||
}
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: imageFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openImage)
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: videoFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openVideo)
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
fileOpen.openImage.connect(openImage)
|
||||
fileOpen.openVideo.connect(openVideo)
|
||||
fileOpen.openCamera.connect(openCamera)
|
||||
fileOpen.close.connect(close)
|
||||
}
|
||||
|
||||
function init() {
|
||||
console.log("[qmlvideofx] main.init")
|
||||
imageFileBrowser.folder = imagePath
|
||||
videoFileBrowser.folder = videoPath
|
||||
content.init()
|
||||
performanceLoader.init()
|
||||
if (fileName != "")
|
||||
content.openVideo(fileName)
|
||||
}
|
||||
|
||||
function qmlFramePainted() {
|
||||
if (performanceLoader.item)
|
||||
performanceLoader.item.qmlFramePainted()
|
||||
}
|
||||
|
||||
function openImage() {
|
||||
imageFileBrowser.show()
|
||||
}
|
||||
|
||||
function openVideo() {
|
||||
videoFileBrowser.show()
|
||||
}
|
||||
|
||||
function openCamera() {
|
||||
content.openCamera()
|
||||
}
|
||||
|
||||
function close() {
|
||||
content.openImage("qrc:/images/qt-logo.png")
|
||||
}
|
||||
}
|
||||
@@ -1,408 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the Qt Mobility Components.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** 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 Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
width: 640
|
||||
height: 360
|
||||
color: "grey"
|
||||
property string fileName
|
||||
property alias volume: content.volume
|
||||
property bool perfMonitorsLogging: false
|
||||
property bool perfMonitorsVisible: false
|
||||
|
||||
QtObject {
|
||||
id: d
|
||||
property bool dialogShown: (fileOpenContainer.state == "shown" ||
|
||||
effectSelectionPanel.state == "shown" ||
|
||||
videoFileBrowser.shown ||
|
||||
imageFileBrowser.shown)
|
||||
property real gripSize: 40
|
||||
}
|
||||
|
||||
// Create ScreenSaver element via Loader, so this app will still run if the
|
||||
// SystemInfo module is not available
|
||||
Loader {
|
||||
source: "DisableScreenSaver.qml"
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: performanceLoader
|
||||
|
||||
Connections {
|
||||
target: d
|
||||
onDialogShownChanged:
|
||||
if (performanceLoader.item)
|
||||
performanceLoader.item.enabled = !d.dialogShown
|
||||
ignoreUnknownSignals: true
|
||||
}
|
||||
|
||||
function init() {
|
||||
console.log("[qmlvideofx] performanceLoader.init logging " + root.perfMonitorsLogging + " visible " + root.perfMonitorsVisible)
|
||||
var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible
|
||||
source = enabled ? "../performancemonitor/PerformanceItem.qml" : ""
|
||||
}
|
||||
|
||||
onLoaded: {
|
||||
item.parent = root
|
||||
item.anchors.top = root.top
|
||||
item.anchors.left = root.left
|
||||
item.logging = root.perfMonitorsLogging
|
||||
item.displayed = root.perfMonitorsVisible
|
||||
item.init()
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: inner
|
||||
anchors.fill: parent
|
||||
color: "grey"
|
||||
|
||||
Content {
|
||||
id: content
|
||||
anchors.fill: parent
|
||||
gripSize: d.gripSize
|
||||
onVideoFramePainted: performanceLoader.item.videoFramePainted()
|
||||
}
|
||||
|
||||
ParameterPanel {
|
||||
id: parameterPanel
|
||||
anchors {
|
||||
left: parent.left;
|
||||
right: parent.right;
|
||||
margins: 10
|
||||
}
|
||||
y: parent.height
|
||||
gripSize: d.gripSize
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "shown"
|
||||
PropertyChanges {
|
||||
target: parameterPanel
|
||||
y: parent.height - (parameterPanel.height + 10)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: "*"
|
||||
to: "*"
|
||||
NumberAnimation {
|
||||
properties: "y"
|
||||
easing.type: Easing.OutQuart
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
state: (enabled && !d.dialogShown) ? "shown" : "baseState"
|
||||
}
|
||||
|
||||
EffectSelectionPanel {
|
||||
id: effectSelectionPanel
|
||||
anchors {
|
||||
top: parent.top;
|
||||
bottom: parameterPanel.top;
|
||||
margins: 10
|
||||
}
|
||||
x: parent.width
|
||||
width: parent.width - 40
|
||||
opacity: 0.75
|
||||
radius: 20
|
||||
itemHeight: 50
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "shown"
|
||||
PropertyChanges {
|
||||
target: effectSelectionPanel
|
||||
x: 20
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: "*"
|
||||
to: "*"
|
||||
NumberAnimation {
|
||||
properties: "x"
|
||||
easing.type: Easing.OutQuart
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
onEffectSourceChanged: {
|
||||
content.effectSource = effectSource
|
||||
if (content.effect.parameters.count) {
|
||||
parameterPanel.model = content.effect.parameters
|
||||
parameterPanel.enabled = true
|
||||
} else {
|
||||
parameterPanel.enabled = false
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: state = "baseState"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: fileOpenContainer
|
||||
anchors {
|
||||
top: parent.top
|
||||
bottom: parameterPanel.top
|
||||
margins: 10
|
||||
}
|
||||
x: -width
|
||||
width: parent.width - 40
|
||||
color: "transparent"
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
|
||||
FileOpen {
|
||||
id: fileOpen
|
||||
color: "transparent"
|
||||
width: parent.width
|
||||
height: 200
|
||||
opacity: 0.75
|
||||
radius: 20
|
||||
buttonHeight: 40
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
width: parent.width
|
||||
height: 250
|
||||
onClicked: fileOpenContainer.state = "baseState"
|
||||
}
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "shown"
|
||||
PropertyChanges {
|
||||
target: fileOpenContainer
|
||||
x: 20
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: "*"
|
||||
to: "*"
|
||||
NumberAnimation {
|
||||
properties: "x"
|
||||
easing.type: Easing.OutQuart
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: splashScreen
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
width: 300
|
||||
height: 200
|
||||
radius: 0.1 * height
|
||||
color: "white"
|
||||
opacity: 0.9
|
||||
border { color: "black"; width: 2 }
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 5
|
||||
}
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: 24
|
||||
text: "Tap on left side to switch between sources.\n\nTap on right side to switch between effects."
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: parent.state = "hidden"
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "hidden"
|
||||
PropertyChanges {
|
||||
target: splashScreen
|
||||
opacity: 0.0
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
from: "*"
|
||||
to: "*"
|
||||
NumberAnimation {
|
||||
properties: "opacity"
|
||||
easing.type: Easing.OutQuart
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
HintedMouseArea {
|
||||
id: fileOpenMouseArea
|
||||
anchors {
|
||||
left: parent.left;
|
||||
top: parent.top;
|
||||
bottom: parameterPanel.top;
|
||||
topMargin: 75
|
||||
}
|
||||
width: 100
|
||||
onClicked: {
|
||||
fileOpenMouseArea.hintEnabled = false
|
||||
effectSelectionPanelMouseArea.hintEnabled = false
|
||||
splashScreen.state = "hidden"
|
||||
fileOpenContainer.state = "shown"
|
||||
}
|
||||
enabled: !d.dialogShown
|
||||
}
|
||||
|
||||
HintedMouseArea {
|
||||
id: effectSelectionPanelMouseArea
|
||||
anchors {
|
||||
right: parent.right;
|
||||
top: parent.top;
|
||||
bottom: parameterPanel.top;
|
||||
topMargin: 75
|
||||
}
|
||||
width: 100
|
||||
onClicked: {
|
||||
fileOpenMouseArea.hintEnabled = false
|
||||
effectSelectionPanelMouseArea.hintEnabled = false
|
||||
splashScreen.state = "hidden"
|
||||
effectSelectionPanel.state = "shown"
|
||||
}
|
||||
enabled: !d.dialogShown
|
||||
}
|
||||
|
||||
Image {
|
||||
source: "qrc:/images/close.png"
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
margins: 5
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: Qt.quit()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
fileOpen.openImage.connect(openImage)
|
||||
fileOpen.openVideo.connect(openVideo)
|
||||
fileOpen.openCamera.connect(openCamera)
|
||||
fileOpen.close.connect(close)
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: imageFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openImage)
|
||||
}
|
||||
|
||||
FileBrowser {
|
||||
id: videoFileBrowser
|
||||
anchors.fill: root
|
||||
Component.onCompleted: fileSelected.connect(content.openVideo)
|
||||
}
|
||||
|
||||
// Called from main() once root properties have been set
|
||||
function init() {
|
||||
console.log("[qmlvideofx] main.init")
|
||||
imageFileBrowser.folder = imagePath
|
||||
videoFileBrowser.folder = videoPath
|
||||
content.init()
|
||||
performanceLoader.init()
|
||||
if (fileName != "") {
|
||||
fileOpenMouseArea.hintEnabled = false
|
||||
effectSelectionPanelMouseArea.hintEnabled = false
|
||||
splashScreen.state = "hidden"
|
||||
content.openVideo(fileName)
|
||||
}
|
||||
}
|
||||
|
||||
function qmlFramePainted() {
|
||||
if (performanceLoader.item)
|
||||
performanceLoader.item.qmlFramePainted()
|
||||
}
|
||||
|
||||
function openImage() {
|
||||
fileOpenContainer.state = "baseState"
|
||||
imageFileBrowser.show()
|
||||
}
|
||||
|
||||
function openVideo() {
|
||||
fileOpenContainer.state = "baseState"
|
||||
videoFileBrowser.show()
|
||||
}
|
||||
|
||||
function openCamera() {
|
||||
fileOpenContainer.state = "baseState"
|
||||
content.openCamera()
|
||||
}
|
||||
|
||||
function close() {
|
||||
fileOpenContainer.state = "baseState"
|
||||
content.openImage("qrc:/images/qt-logo.png")
|
||||
}
|
||||
}
|
||||
@@ -10,10 +10,12 @@ RESOURCES += qmlvideofx.qrc
|
||||
|
||||
include($$PWD/../snippets/performancemonitor/performancemonitordeclarative.pri)
|
||||
|
||||
maemo6: {
|
||||
DEFINES += SMALL_SCREEN_LAYOUT
|
||||
DEFINES += SMALL_SCREEN_PHYSICAL
|
||||
}
|
||||
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/multimedia/video/qmlvideofx
|
||||
INSTALLS += target
|
||||
|
||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
||||
|
||||
OTHER_FILES += \
|
||||
android/AndroidManifest.xml
|
||||
|
||||
QMAKE_INFO_PLIST = Info.plist
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/close.png</file>
|
||||
<file>images/folder.png</file>
|
||||
<file>images/titlebar.png</file>
|
||||
<file>images/titlebar.sci</file>
|
||||
<file>images/up.png</file>
|
||||
<file>images/qt-logo.png</file>
|
||||
<file>qml/qmlvideofx/Button.qml</file>
|
||||
<file>qml/qmlvideofx/Content.qml</file>
|
||||
@@ -26,12 +21,10 @@
|
||||
<file>qml/qmlvideofx/EffectPixelate.qml</file>
|
||||
<file>qml/qmlvideofx/EffectPosterize.qml</file>
|
||||
<file>qml/qmlvideofx/EffectRipple.qml</file>
|
||||
<file>qml/qmlvideofx/EffectSelectionPanel.qml</file>
|
||||
<file>qml/qmlvideofx/EffectSepia.qml</file>
|
||||
<file>qml/qmlvideofx/EffectSharpen.qml</file>
|
||||
<file>qml/qmlvideofx/EffectShockwave.qml</file>
|
||||
<file>qml/qmlvideofx/EffectSobelEdgeDetection1.qml</file>
|
||||
<file>qml/qmlvideofx/EffectSobelEdgeDetection2.qml</file>
|
||||
<file>qml/qmlvideofx/EffectTiltShift.qml</file>
|
||||
<file>qml/qmlvideofx/EffectToon.qml</file>
|
||||
<file>qml/qmlvideofx/EffectVignette.qml</file>
|
||||
@@ -40,8 +33,6 @@
|
||||
<file>qml/qmlvideofx/FileBrowser.qml</file>
|
||||
<file>qml/qmlvideofx/FileOpen.qml</file>
|
||||
<file>qml/qmlvideofx/HintedMouseArea.qml</file>
|
||||
<file>qml/qmlvideofx/main-largescreen.qml</file>
|
||||
<file>qml/qmlvideofx/main-smallscreen.qml</file>
|
||||
<file>qml/qmlvideofx/ParameterPanel.qml</file>
|
||||
<file>qml/qmlvideofx/Slider.qml</file>
|
||||
<file>shaders/billboard.fsh</file>
|
||||
@@ -61,11 +52,21 @@
|
||||
<file>shaders/sharpen.fsh</file>
|
||||
<file>shaders/shockwave.fsh</file>
|
||||
<file>shaders/sobeledgedetection1.fsh</file>
|
||||
<file>shaders/sobeledgedetection2.fsh</file>
|
||||
<file>shaders/tiltshift.fsh</file>
|
||||
<file>shaders/toon.fsh</file>
|
||||
<file>shaders/vignette.fsh</file>
|
||||
<file>shaders/warhol.fsh</file>
|
||||
<file>shaders/wobble.fsh</file>
|
||||
<file>images/Slider_handle.png</file>
|
||||
<file>images/Slider_bar.png</file>
|
||||
<file>qml/qmlvideofx/Curtain.qml</file>
|
||||
<file>images/Triangle_bottom.png</file>
|
||||
<file>images/Triangle_Top.png</file>
|
||||
<file>images/Dropdown_arrows.png</file>
|
||||
<file>images/icon_Folder.png</file>
|
||||
<file>images/icon_BackArrow.png</file>
|
||||
<file>qml/qmlvideofx/Main.qml</file>
|
||||
<file>images/icon_Menu.png</file>
|
||||
<file>qml/qmlvideofx/EffectSelectionList.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -35,10 +35,12 @@
|
||||
\brief The Camera Example shows how to use the API to capture a still image
|
||||
or video.
|
||||
|
||||
The Camera Example demonstrates how you can use Qt Multimedia to implement
|
||||
The Camera Example demonstrates how you can use \l{Qt Multimedia} to implement
|
||||
some basic Camera functionality to take still images and record video clips
|
||||
with audio.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
|
||||
A Camera class is created that will act as our Camera. It has a user interface,
|
||||
control functions, setting values and a means of defining the location where
|
||||
the image or video clip is to be saved. It will also store the image and video
|
||||
@@ -74,5 +76,3 @@ is started with a call to \l {QMediaRecorder::record()}.
|
||||
\image camera-example.png
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -34,6 +34,8 @@
|
||||
This example creates a simple multimedia player. We can play audio and
|
||||
or video files using various codecs.
|
||||
|
||||
\include examples-run.qdocinc
|
||||
|
||||
The example uses a QMediaPlayer object passed into a QVideoWidget to
|
||||
control the video output. To give the application playlist capability
|
||||
we also use a QPlayList object.
|
||||
@@ -93,4 +95,3 @@
|
||||
\endcode
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -32,9 +32,11 @@
|
||||
\brief This example demonstrates how to stream video on a graphics scene.
|
||||
|
||||
The Video Graphics Item example shows how to implement a QGraphicsItem that displays video on a
|
||||
graphics scene using Qt Multimedia's QAbstractVideoSurface.
|
||||
graphics scene using \l{Qt Multimedia}'s QAbstractVideoSurface.
|
||||
|
||||
\image video-videographicsitem.png
|
||||
|
||||
\sa {Video Widget Example}
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
@@ -32,7 +32,9 @@
|
||||
\brief This example is a simple video player
|
||||
|
||||
The Video Widget example denonstrates how to implement a video widget using
|
||||
Qt Multimedia's QAbstractVideoSurface.
|
||||
\l{Qt Multimedia}'s QAbstractVideoSurface.
|
||||
|
||||
\image video-videowidget.png
|
||||
|
||||
\include examples-run.qdocinc
|
||||
*/
|
||||
|
||||
@@ -286,8 +286,10 @@ void QAndroidCameraSession::close()
|
||||
|
||||
void QAndroidCameraSession::setVideoPreview(QObject *videoOutput)
|
||||
{
|
||||
if (m_videoOutput)
|
||||
if (m_videoOutput) {
|
||||
m_videoOutput->stop();
|
||||
m_videoOutput->reset();
|
||||
}
|
||||
|
||||
if (videoOutput) {
|
||||
connect(videoOutput, SIGNAL(readyChanged(bool)), this, SLOT(onVideoOutputReady(bool)));
|
||||
@@ -368,8 +370,12 @@ void QAndroidCameraSession::stopPreview()
|
||||
|
||||
m_camera->stopPreview();
|
||||
m_camera->setPreviewSize(QSize());
|
||||
if (m_videoOutput)
|
||||
m_camera->setPreviewTexture(0);
|
||||
|
||||
if (m_videoOutput) {
|
||||
m_videoOutput->stop();
|
||||
m_videoOutput->reset();
|
||||
}
|
||||
m_previewStarted = false;
|
||||
}
|
||||
|
||||
|
||||