ThirtyBitImageItem {
id: thirtyBitImageItem
objectName: "thirtyBitImageItem"
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.bottom: parent.bottom
width: (implicitWidth / implicitHeight) * height
anchors.margins: 10
layer.enabled: true
}
class ThirtyBitImageItem
: public QQuickItem
{
Q_OBJECT
Q_PROPERTY(Image* image READ image WRITE setImage)
public:
ThirtyBitImageItem(QQuickItem* parent=nullptr);
Image* image();
const Image* image() const;
void setImage(Image* image);
signals:
public slots:
protected:
Image* m_image;
std::forward_list<QMetaObject::Connection> m_imageSignalConnections;
QSGNode* updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData* updatePaintNodeData) override;
void onImageSizeChanged(QSize size);
};
ThirtyBitImageItem is to be our 30-bit capable version of the built-in QML type, Image (implemented as QQuickImage in C++). QQuickImage::updatePaintNode's implementation can be seen in qt5/qtdeclarative/src/quick/items/qquickimage.cpp:QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
Q_D(QQuickImage);
QSGTexture *texture = d->sceneGraphRenderContext()->textureForFactory(d->pix.textureFactory(), window());
// Copy over the current texture state into the texture provider...
if (d->provider) {
d->provider->m_smooth = d->smooth;
d->provider->m_mipmap = d->mipmap;
d->provider->updateTexture(texture);
}
if (!texture || width() <= 0 || height() <= 0) {
delete oldNode;
return 0;
}
QSGImageNode *node = static_cast<QSGImageNode *>(oldNode);
if (!node) {
d->pixmapChanged = true;
node = d->sceneGraphContext()->createImageNode();
}
// ...
return node;
}
July 2009 August 2009 September 2009 October 2009 November 2009 December 2009 January 2010 September 2010 December 2010 January 2011 February 2011 April 2011 June 2011 August 2011 February 2012 June 2012 July 2012 August 2012 October 2012 November 2012 January 2014 April 2014 June 2014 August 2014 September 2014 October 2014 January 2015 March 2015 April 2015 June 2015 November 2015 December 2015 January 2016 June 2016 August 2016 January 2017 March 2017 April 2018 April 2019 June 2019 January 2020
Subscribe to Posts [Atom]
Post a Comment