diff options
Diffstat (limited to 'src/adaptationlayers/default/default_rectanglenode.cpp')
-rw-r--r-- | src/adaptationlayers/default/default_rectanglenode.cpp | 31 |
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() |