diff options
Diffstat (limited to 'basicsuite/Qt5Everywhere/demos/shaders/import')
6 files changed, 131 insertions, 0 deletions
diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/import.pro b/basicsuite/Qt5Everywhere/demos/shaders/import/import.pro new file mode 100644 index 0000000..d72fb60 --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/import.pro @@ -0,0 +1,13 @@ +CXX_MODULE = qml +TARGET = shaderreader +TARGETPATH = ShaderReader +IMPORT_VERSION = 1.0 + +QT += quick + +SOURCES = main.cpp \ + shaderfilereader.cpp \ + +HEADERS = shaderfilereader.h \ + +load(qml_plugin) diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/main.cpp b/basicsuite/Qt5Everywhere/demos/shaders/import/main.cpp new file mode 100644 index 0000000..738a850 --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/main.cpp @@ -0,0 +1,22 @@ +#include <QtQml/QQmlExtensionPlugin> +#include <QtQml/QtQml> +#include "shaderfilereader.h" + +QT_BEGIN_NAMESPACE + +class SensorExplorerDeclarativeModule : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface" FILE "plugin.json") +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("ShaderReader")); + qmlRegisterType<ShaderFileReader>(uri, 1, 0, "ShaderFileReader"); + } +}; + +QT_END_NAMESPACE + +#include "main.moc" + diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/plugin.json b/basicsuite/Qt5Everywhere/demos/shaders/import/plugin.json new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/plugin.json diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/qmldir b/basicsuite/Qt5Everywhere/demos/shaders/import/qmldir new file mode 100644 index 0000000..0c53031 --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/qmldir @@ -0,0 +1,2 @@ +module ShaderReader +plugin shaderreader diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.cpp b/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.cpp new file mode 100644 index 0000000..985a28c --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.cpp @@ -0,0 +1,50 @@ +#include "shaderfilereader.h" +#include <QtCore/QFile> +#include <QtCore/QTextStream> + +ShaderFileReader::ShaderFileReader(QObject* parent) + : QObject(parent) +{ + if (qEnvironmentVariableIsEmpty("QT_SHADER_PATH")) + setenv("QT_SHADER_PATH", "/data/user/qt/Qt5Everywhere/demos/shaders/",1); +} + +ShaderFileReader::~ShaderFileReader() +{ +} + +void ShaderFileReader::setFragmentShaderFilename(const QString &name) +{ + m_fragmentShaderFilename = name; + Q_EMIT fragmentShaderFilenameChanged(); +} + +void ShaderFileReader::setVertexShaderFilename(const QString &name) +{ + m_vertexShaderFilename = name; + Q_EMIT vertexShaderFilenameChanged(); +} + +QString ShaderFileReader::fragmentShader() const +{ + return readShaderFile(m_fragmentShaderFilename); +} + +QString ShaderFileReader::vertexShader() const +{ + return readShaderFile(m_vertexShaderFilename); +} + +QString ShaderFileReader::readShaderFile(const QString &fileName) const +{ + QString content; + QString path = qgetenv("QT_SHADER_PATH"); + QFile file(path.append(fileName)); + if (file.open(QIODevice::ReadOnly)) { + QTextStream stream(&file); + content = stream.readAll(); + file.close(); + } + return content; +} + diff --git a/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.h b/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.h new file mode 100644 index 0000000..5731bbb --- /dev/null +++ b/basicsuite/Qt5Everywhere/demos/shaders/import/shaderfilereader.h @@ -0,0 +1,44 @@ +#ifndef SHADERFILEREADER_H +#define SHADERFILEREADER_H + +#include <QtCore/QObject> +#include <QtCore/QString> + +class ShaderFileReader : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString fragmentShaderFilename READ fragmentShaderFilename + WRITE setFragmentShaderFilename NOTIFY fragmentShaderFilenameChanged) + Q_PROPERTY(QString vertexShaderFilename READ vertexShaderFilename + WRITE setVertexShaderFilename NOTIFY vertexShaderFilenameChanged) + + Q_PROPERTY(QString fragmentShader READ fragmentShader) + Q_PROPERTY(QString vertexShader READ vertexShader) + +public: + ShaderFileReader(QObject* parent = 0); + ~ShaderFileReader(); + + void setFragmentShaderFilename(const QString &name); + void setVertexShaderFilename(const QString &name); + QString fragmentShaderFilename() const { return m_fragmentShaderFilename; } + QString vertexShaderFilename() const { return m_vertexShaderFilename; } + + QString fragmentShader() const; + QString vertexShader() const; + +protected: + QString readShaderFile(const QString &fileName) const; + +Q_SIGNALS: + void fragmentShaderFilenameChanged(); + void vertexShaderFilenameChanged(); + +private: + QString m_fragmentShaderFilename; + QString m_vertexShaderFilename; +}; + +Q_DECLARE_METATYPE(ShaderFileReader*) + +#endif // SHADERFILEREADER_H |