Kindfield
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Enumerations
Enumerator
Properties
Friends
Pages
hfgui
volumeeffect.h
Go to the documentation of this file.
1
/****************************************************************************
2
**
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
5
**
6
** This file is part of the Qt3D module of the Qt Toolkit.
7
**
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
16
**
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24
**
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28
**
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
36
**
37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
42
#ifndef VolumeSHADERPROGRAM_H
43
#define VolumeSHADERPROGRAM_H
44
45
#include "qquickeffect.h"
46
47
#include <QFile>
48
#include <QDebug>
49
50
QT_BEGIN_NAMESPACE
51
52
class
VolumeShaderProgramPrivate
;
53
class
QGLSceneNode;
54
class
HartreeFock
;
55
56
class
Texture3D
{
57
public
:
58
Texture3D
() :
59
width
(0),
60
height
(0),
61
depth
(0),
62
data
(0)
63
{}
64
65
int
width
;
66
int
height
;
67
int
depth
;
68
GLuint*
data
;
69
};
70
71
class
VolumeShaderProgram
:
public
QQuickEffect
72
{
73
Q_OBJECT
74
Q_PROPERTY(QString
vertexShader
READ
vertexShader
WRITE
setVertexShader
NOTIFY
shaderChanged
)
75
Q_PROPERTY(QString
fragmentShader
READ
fragmentShader
WRITE
setFragmentShader
NOTIFY shaderChanged)
76
// Q_PROPERTY(QUrl texture3D READ texture3D WRITE setTexture3D NOTIFY texture3DChanged)
77
Q_PROPERTY(QUrl
vertexShaderSource
READ
vertexShaderSource
WRITE
setVertexShaderSource
NOTIFY
vertexShaderSourceChanged
)
78
Q_PROPERTY(QUrl
fragmentShaderSource
READ
fragmentShaderSource
WRITE
setFragmentShaderSource
NOTIFY
fragmentShaderSourceChanged
)
79
Q_PROPERTY(
HartreeFock
*
positionReader
READ
positionReader
WRITE
setPositionReader
NOTIFY
positionReaderChanged
)
80
81
public:
82
VolumeShaderProgram
(QObject *parent = 0);
83
virtual ~
VolumeShaderProgram
();
84
85
QString
vertexShader
() const;
86
void
setVertexShader
(const QString& value);
87
88
QString
fragmentShader
() const;
89
void
setFragmentShader
(const QString& value);
90
91
virtual
void
enableEffect
(QGLPainter *painter);
92
virtual
void
applyTo
(QGLSceneNode *node);
93
// QUrl texture3D() const;
94
95
QUrl
vertexShaderSource
() const;
96
97
QUrl
fragmentShaderSource
() const;
98
const
Texture3D
&
texture3Ddata
() const;
99
HartreeFock
*
positionReader
()
const
100
{
101
return
m_positionReader;
102
}
103
104
public
Q_SLOTS:
105
void
markAllPropertiesDirty
();
106
void
markPropertyDirty
(
int
property);
107
// void setTexture3D(QUrl arg);
108
109
void
setVertexShaderSource
(QUrl arg);
110
111
void
setFragmentShaderSource
(QUrl arg);
112
113
void
setPositionReader
(
HartreeFock
* arg);
114
void
forceUpdate
();
115
116
Q_SIGNALS:
117
void
finishedLoading
();
118
void
shaderChanged
();
119
// void texture3DChanged(QUrl arg);
120
121
void
vertexShaderSourceChanged
(QUrl arg);
122
123
void
fragmentShaderSourceChanged
(QUrl arg);
124
125
void
positionReaderChanged
(
HartreeFock
* arg);
126
127
private
:
128
129
bool
loadTexture3D();
130
VolumeShaderProgramPrivate
*d;
131
// QUrl m_texture3D;
132
// int m_texture3DuniformValue;
133
QUrl m_vertexShaderSource;
134
QUrl m_fragmentShaderSource;
135
int
m_eyeLocation;
136
Texture3D
m_texture3Ddata;
137
HartreeFock
* m_positionReader;
138
};
139
140
QT_END_NAMESPACE
141
142
QML_DECLARE_TYPE(
VolumeShaderProgram
)
143
144
#endif
Generated on Sun Jun 22 2014 14:02:46 for Kindfield by
1.8.4