CaptureMoment 0.1.0
Free and open-source non-destructive photo editor
Loading...
Searching...
No Matches
rhi_image_item.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <QQuickRhiItem>
11#include <QMutex>
12#include <memory>
13
15
16namespace CaptureMoment::UI {
17
24namespace Rendering {
25
64class RHIImageItem : public QQuickRhiItem, public BaseImageItem {
65 Q_OBJECT
66
67private:
74 bool m_texture_needs_update{false};
75
77
78public:
87 explicit RHIImageItem(QQuickItem* parent = nullptr);
88
95 ~RHIImageItem() override;
96
114 void setImage(std::unique_ptr<Core::Common::ImageRegion> image) override;
115
132 void updateTile(std::unique_ptr<Core::Common::ImageRegion> tile) override;
133
144 [[nodiscard]] bool textureNeedsUpdate() const;
145
157 void setTextureNeedsUpdate(bool needs_update);
158
159signals:
164 void zoomChanged(float zoom);
165
170 void panChanged(const QPointF& pan);
171
179
180protected:
181 // =========================================================================
182 // QQuickRhiItem Interface
183 // =========================================================================
184
196 QQuickRhiItemRenderer *createRenderer() override;
197
198 // =========================================================================
199 // BaseImageItem Virtual Handlers
200 // =========================================================================
201
209 void onZoomChanged(float new_zoom) override;
210
218 void onPanChanged(const QPointF& new_pan) override;
219
225 void onImageChanged() override;
226};
227
228} // namespace Rendering
229
230} // namespace CaptureMoment::UI
Base class for Qt Quick image display items managing common state (zoom, pan, dimensions)
Base class for Qt Quick image display items managing common state dimensions.
QPointF pan() const override
Gets the current pan offset.
float zoom() const override
Gets the current zoom level.
Modern QQuickItem that renders an image via RHI (Vulkan/Metal/DX12/OpenGL) using QQuickRhiItem.
~RHIImageItem() override
Destroys the RHIImageItem and releases associated resources.
QQuickRhiItemRenderer * createRenderer() override
Creates the renderer instance responsible for RHI rendering.
void onImageChanged() override
Handler called when image data changes.
void zoomChanged(float zoom)
Signal emitted when the zoom value changes.
bool textureNeedsUpdate() const
Gets the state of the texture update flag.
void onPanChanged(const QPointF &new_pan) override
Handler called when pan changes.
void setTextureNeedsUpdate(bool needs_update)
Sets the state of the texture update flag.
void setImage(std::unique_ptr< Core::Common::ImageRegion > image) override
Sets the full image to be displayed.
void imageSizeChanged()
Signal emitted when the image dimensions change (width or height).
void onZoomChanged(float new_zoom) override
Handler called when zoom changes.
void updateTile(std::unique_ptr< Core::Common::ImageRegion > tile) override
Updates a specific tile of the displayed image.
RHIImageItem(QQuickItem *parent=nullptr)
Constructs a new RHIImageItem.
void panChanged(const QPointF &pan)
Signal emitted when the pan offset changes.
GPU renderer for RHIImageItem using Qt's Rendering Hardware Interface.
CaptureMoment — footer