QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
3d
framegraph
qgsoverlaytextureentity.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsoverlaytextureentity.cpp
3
--------------------------------------
4
Date : June 2024
5
Copyright : (C) 2024 by Benoit De Mezzo
6
Email : benoit dot de dot mezzo at oslandia dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgsoverlaytextureentity.h
"
17
18
#include <QUrl>
19
#include <QVector2D>
20
#include <Qt3DRender/QMaterial>
21
#include <Qt3DRender/QParameter>
22
#include <Qt3DRender/QShaderProgram>
23
#include <Qt3DRender/QTexture>
24
25
#include "moc_qgsoverlaytextureentity.cpp"
26
27
QgsOverlayTextureEntity::QgsOverlayTextureEntity
( Qt3DRender::QTexture2D *texture, Qt3DRender::QLayer *layer, QNode *parent )
28
:
QgsRenderPassQuad
( layer, parent )
29
{
30
setObjectName(
"OverlayTextureQuad"
);
31
32
mTextureParameter
=
new
Qt3DRender::QParameter(
"previewTexture"
, texture );
33
mCenterTextureCoords
=
new
Qt3DRender::QParameter(
"centerTexCoords"
, QVector2D( 0, 0 ) );
34
mSizeTextureCoords
=
new
Qt3DRender::QParameter(
"sizeTexCoords"
, QVector2D( 1, 1 ) );
35
mIsDepth
=
new
Qt3DRender::QParameter(
"isDepth"
,
true
);
36
mFlipTextureY
=
new
Qt3DRender::QParameter(
"flipTextureY"
,
true
);
37
38
mMaterial
->addParameter(
mTextureParameter
);
39
mMaterial
->addParameter(
mCenterTextureCoords
);
40
mMaterial
->addParameter(
mSizeTextureCoords
);
41
mMaterial
->addParameter(
mIsDepth
);
42
mMaterial
->addParameter(
mFlipTextureY
);
43
44
mShader
->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl(
"qrc:/shaders/preview.vert"
) ) );
45
mShader
->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl(
"qrc:/shaders/preview.frag"
) ) );
46
47
setViewport( QPointF( 0.9f, 0.9f ), QSizeF( 0.1, 0.1 ) );
48
49
setEnabled(
false
);
50
}
51
52
void
QgsOverlayTextureEntity::setPosition
( Qt::Corner corner,
double
size,
double
offset )
53
{
54
setPosition
( corner, QSizeF( size, size ), QSizeF( offset, offset ) );
55
}
56
57
void
QgsOverlayTextureEntity::setPosition
( Qt::Corner corner, QSizeF size, QSizeF offset )
58
{
59
switch
( corner )
60
{
61
case
Qt::Corner::TopRightCorner:
62
setViewport( QPointF( 1.0f - size.width() / 2 - offset.width(), offset.height() + size.height() / 2 ), 0.5 * size );
63
break
;
64
case
Qt::Corner::TopLeftCorner:
65
setViewport( QPointF( offset.width() + size.width() / 2, offset.height() + size.height() / 2 ), 0.5 * size );
66
break
;
67
case
Qt::Corner::BottomRightCorner:
68
setViewport( QPointF( 1.0f - size.width() / 2 - offset.width(), 1.0f - size.height() / 2 - offset.height() ), 0.5 * size );
69
break
;
70
case
Qt::Corner::BottomLeftCorner:
71
setViewport( QPointF( offset.width() + size.width() / 2, 1.0f - size.height() / 2 - offset.height() ), 0.5 * size );
72
break
;
73
}
74
}
75
76
77
void
QgsOverlayTextureEntity::setViewport(
const
QPointF ¢erTexCoords,
const
QSizeF &sizeTexCoords )
78
{
79
mCenterTextureCoords
->setValue( QVector2D(
static_cast<
float
>
( centerTexCoords.x() ),
static_cast<
float
>
( centerTexCoords.y() ) ) );
80
mSizeTextureCoords
->setValue( QVector2D(
static_cast<
float
>
( sizeTexCoords.width() ),
static_cast<
float
>
( sizeTexCoords.height() ) ) );
81
}
QgsOverlayTextureEntity::setPosition
void setPosition(Qt::Corner corner, QSizeF size, QSizeF offset=QSizeF(0., 0.))
Sets the texture debugging parameters.
Definition
qgsoverlaytextureentity.cpp:57
QgsOverlayTextureEntity::mSizeTextureCoords
Qt3DRender::QParameter * mSizeTextureCoords
Definition
qgsoverlaytextureentity.h:70
QgsOverlayTextureEntity::mTextureParameter
Qt3DRender::QParameter * mTextureParameter
Definition
qgsoverlaytextureentity.h:68
QgsOverlayTextureEntity::mFlipTextureY
Qt3DRender::QParameter * mFlipTextureY
Definition
qgsoverlaytextureentity.h:72
QgsOverlayTextureEntity::mCenterTextureCoords
Qt3DRender::QParameter * mCenterTextureCoords
Definition
qgsoverlaytextureentity.h:69
QgsOverlayTextureEntity::QgsOverlayTextureEntity
QgsOverlayTextureEntity(Qt3DRender::QTexture2D *texture, Qt3DRender::QLayer *layer, QNode *parent=nullptr)
Constructor.
Definition
qgsoverlaytextureentity.cpp:27
QgsOverlayTextureEntity::mIsDepth
Qt3DRender::QParameter * mIsDepth
Definition
qgsoverlaytextureentity.h:71
QgsRenderPassQuad::QgsRenderPassQuad
QgsRenderPassQuad(Qt3DRender::QLayer *layer, QNode *parent=nullptr)
Constructor.
Definition
qgsrenderpassquad.cpp:33
QgsRenderPassQuad::mShader
Qt3DRender::QShaderProgram * mShader
Definition
qgsrenderpassquad.h:48
QgsRenderPassQuad::mMaterial
Qt3DRender::QMaterial * mMaterial
Definition
qgsrenderpassquad.h:47
qgsoverlaytextureentity.h
Generated on
for QGIS API Documentation by
1.17.0