summaryrefslogtreecommitdiffstats
path: root/src/adaptationlayers/default/default_rectanglenode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/adaptationlayers/default/default_rectanglenode.cpp')
-rw-r--r--src/adaptationlayers/default/default_rectanglenode.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/adaptationlayers/default/default_rectanglenode.cpp b/src/adaptationlayers/default/default_rectanglenode.cpp
index 70b9647..ed5094b 100644
--- a/src/adaptationlayers/default/default_rectanglenode.cpp
+++ b/src/adaptationlayers/default/default_rectanglenode.cpp
@@ -52,6 +52,7 @@
DefaultRectangleNode::DefaultRectangleNode(MaterialPreference preference)
: m_material_preference(preference)
+ , m_gradient_texture(0)
, m_gradient_is_opaque(true)
{
m_border_material.setColor(m_pen_color);
@@ -144,8 +145,8 @@ void DefaultRectangleNode::setOpacity(qreal opacity)
if (opacity < 1) {
delete m_fill_material;
TextureMaterialWithOpacity *material = new TextureMaterialWithOpacity;
- if (!m_gradient_texture.isNull())
- material->setTexture(m_gradient_texture->texture(), m_gradient_is_opaque);
+ if (m_gradient_texture)
+ material->setTexture(m_gradient_texture, m_gradient_is_opaque);
material->setLinearFiltering(true);
material->setOpacity(opacity);
m_fill_material = material;
@@ -155,8 +156,8 @@ void DefaultRectangleNode::setOpacity(qreal opacity)
if (opacity >= 1) {
delete m_fill_material;
TextureMaterial *material = new TextureMaterial;
- if (!m_gradient_texture.isNull())
- material->setTexture(m_gradient_texture->texture(), m_gradient_is_opaque);
+ if (m_gradient_texture)
+ material->setTexture(m_gradient_texture, m_gradient_is_opaque);
material->setLinearFiltering(true);
m_fill_material = material;
} else {
@@ -179,7 +180,6 @@ void DefaultRectangleNode::setGradientStops(const QGradientStops &stops)
if (stops.isEmpty()) {
// No gradient specified, use flat color.
- m_gradient_texture.clear();
if (!FlatColorMaterial::is(m_fill_material)) {
delete m_fill_material;
FlatColorMaterial *material = new FlatColorMaterial;
@@ -280,12 +280,13 @@ void DefaultRectangleNode::updateGeometry()
// Calculate from where in the texture to sample gradient colours.
qreal gradientSourceX0 = 0, gradientSourceDX = 0, gradientSourceY = 0;
- if (!m_gradient_texture.isNull()) {
- QRectF src = m_gradient_texture->sourceRect();
- gradientSourceY = qreal(0.5) * (src.top() + src.bottom());
- gradientSourceDX = src.width() / stops.size();
- gradientSourceX0 = src.left() + qreal(0.5) * gradientSourceDX;
- }
+ // ### gunnar: port properly...
+// if (m_gradient_texture) {
+// QRectF src = m_gradient_texture->sourceRect();
+// gradientSourceY = qreal(0.5) * (src.top() + src.bottom());
+// gradientSourceDX = src.width() / stops.size();
+// gradientSourceX0 = src.left() + qreal(0.5) * gradientSourceDX;
+// }
if (m_radius > 0) {
// Rounded corners.
@@ -676,15 +677,17 @@ void DefaultRectangleNode::updateGradientTexture()
line[i] = QColor::fromRgbF(c.redF() * c.alphaF(), c.greenF() * c.alphaF(), c.blueF() * c.alphaF(), c.alphaF()).rgba();
}
- m_gradient_texture = Utilities::getTextureForImage(image, true);
+ m_gradient_texture =
+ qt_adaptation_layer()->textureManager()->requestUploadedTexture(image,
+ TextureManager::SynchronousUploadHint);
Q_ASSERT(TextureMaterial::is(m_fill_material) || TextureMaterialWithOpacity::is(m_fill_material));
// TextureMaterial and TextureMaterialWithOpacity have different (non-virtual) setTexture() implementations.
if (TextureMaterial::is(m_fill_material))
- static_cast<TextureMaterial *>(m_fill_material)->setTexture(m_gradient_texture->texture(), m_gradient_is_opaque);
+ static_cast<TextureMaterial *>(m_fill_material)->setTexture(m_gradient_texture, m_gradient_is_opaque);
else
- static_cast<TextureMaterialWithOpacity *>(m_fill_material)->setTexture(m_gradient_texture->texture(), m_gradient_is_opaque);
+ static_cast<TextureMaterialWithOpacity *>(m_fill_material)->setTexture(m_gradient_texture, m_gradient_is_opaque);
}
QRectF DefaultRectangleNode::calculateBoundingRect()