18#ifndef DIAGRAM_IMAGE_ITEM_H
19#define DIAGRAM_IMAGE_ITEM_H
27#include <QStyleOptionGraphicsItem>
32class QGraphicsSceneContextMenuEvent;
68 enum {
Type = UserType + 1007 };
92 virtual bool fromXml(
const QDomElement &);
93 virtual QDomElement
toXml(QDomDocument &)
const;
98 QString
name()
const override;
109 QStyleOptionGraphicsItem option;
110 paint(painter, &option,
nullptr);
132 void paint(QPainter *,
const QStyleOptionGraphicsItem *, QWidget *)
override;
138 QVariant
itemChange(GraphicsItemChange change,
const QVariant &value)
override;
142 void mirror(
bool horizontal);
150 static QPixmap
computeDisplayPixmap(
const QPixmap &base,
const QRect &cropRect,
const QList<ImageTransparentColorDialog::PickedColor> &colors);
165 void dragResize(
int index,
const QPointF &localPos, Qt::KeyboardModifiers mods);
166 void dragRotateHandle(
int cornerIndex,
const QPointF &scenePos, Qt::KeyboardModifiers mods);
167 void dragSkewHandle(
int edgeIndex,
const QPointF &scenePos, Qt::KeyboardModifiers mods);
static QString handleModeLabel(HandleMode mode)
DiagramImageItem::handleModeLabel.
Definition diagramimageitem.cpp:439
bool m_resizeCenterAnchored
Definition diagramimageitem.h:215
void handlerMouseReleaseEvent(int index)
DiagramImageItem::handlerMouseReleaseEvent Two responsibilities, in order: first, Resize's own pivot ...
Definition diagramimageitem.cpp:796
QPointF pivot() const
Definition diagramimageitem.h:123
ShapeTransform m_transform
Definition diagramimageitem.h:206
QVector< QetGraphicsHandlerItem * > m_handler_vector
Definition diagramimageitem.h:209
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
DiagramImageItem::hoverEnterEvent.
Definition diagramimageitem.cpp:504
qreal scaleFactorY() const
Definition diagramimageitem.h:114
void dragSkewHandle(int edgeIndex, const QPointF &scenePos, Qt::KeyboardModifiers mods)
DiagramImageItem::dragSkewHandle Verified numerically before writing this (all 4 edges,...
Definition diagramimageitem.cpp:991
virtual bool fromXml(const QDomElement &)
DiagramImageItem::fromXml Load this image from xml element e.
Definition diagramimageitem.cpp:1321
void setScaleFactorY(qreal factor)
Definition diagramimageitem.cpp:171
DiagramImageItem(QetGraphicsItem *=nullptr)
DiagramImageItem::DiagramImageItem Constructor without pixmap.
Definition diagramimageitem.cpp:49
void showStatusHint(const QString &text) const
DiagramImageItem::showStatusHint.
Definition diagramimageitem.cpp:684
QRect m_crop_rect
Definition diagramimageitem.h:197
static QString hintForHandleRole(HandleRole role)
Definition diagramimageitem.cpp:560
void setPixmap(const QPixmap &pixmap)
DiagramImageItem::setPixmap Set the new pixmap to be draw.
Definition diagramimageitem.cpp:131
ShapeTransform m_original_transform
Definition diagramimageitem.h:213
void setSkewY(qreal skew)
Definition diagramimageitem.cpp:198
bool m_pivotIsCustom
Definition diagramimageitem.h:207
void setRotationAngle(qreal angle)
Definition diagramimageitem.cpp:180
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
DiagramImageItem::hoverLeaveEvent.
Definition diagramimageitem.cpp:513
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override
DiagramImageItem::paint Draw the pixmap.
Definition diagramimageitem.cpp:95
@ Type
Definition diagramimageitem.h:68
QVector< HandleRole > m_handleRoles
Definition diagramimageitem.h:210
void setPivot(const QPointF &pivot)
DiagramImageItem::setPivot Unlike scale/rotation, moving the pivot alone WOULD visibly shift the imag...
Definition diagramimageitem.cpp:216
void repositionHandles()
DiagramImageItem::repositionHandles Moves the existing handle items to match current geometry,...
Definition diagramimageitem.cpp:616
QPointF scaleAndShearOffset(const QPointF &localPoint) const
Definition diagramimageitem.cpp:366
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override
DiagramImageItem::contextMenuEvent.
Definition diagramimageitem.cpp:1557
void clearHandles()
DiagramImageItem::clearHandles.
Definition diagramimageitem.cpp:522
void resetPivotToBoundingRectCenter()
DiagramImageItem::resetPivotToBoundingRectCenter Used after a resize drag ends (see handlerMouseRelea...
Definition diagramimageitem.cpp:278
static QPointF edgeMidpointPosition(int edgeIndex, qreal w, qreal h)
DiagramImageItem::edgeMidpointPosition Matches QetShapeItem::edgeMidpoint()'s own slot convention exa...
Definition diagramimageitem.cpp:339
void replaceImage()
DiagramImageItem::replaceImage Context-menu action: swaps the underlying pixmap for one loaded from a...
Definition diagramimageitem.cpp:1637
static bool writeRasterAsSvg(const QPixmap &pixmap, const QString &path)
DiagramImageItem::writeRasterAsSvg Wraps pixmap as a base64-embedded PNG inside a minimal,...
Definition diagramimageitem.cpp:1212
void handlerMouseMoveEvent(int index, QGraphicsSceneMouseEvent *event)
DiagramImageItem::handlerMouseMoveEvent.
Definition diagramimageitem.cpp:753
qreal rotationAngle
Definition diagramimageitem.h:45
QPixmap m_base_pixmap
Definition diagramimageitem.h:196
void setPivotRaw(const QPointF &pivot)
DiagramImageItem::setPivotRaw Sets m_transform.pivot directly, with NO position compensation at all –...
Definition diagramimageitem.cpp:261
QString name() const override
DiagramImageItem::name.
Definition diagramimageitem.cpp:1310
void paintForExport(QPainter *painter)
Definition diagramimageitem.h:107
void clearStatusHint() const
DiagramImageItem::clearStatusHint.
Definition diagramimageitem.cpp:695
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
DiagramImageItem::mousePressEvent Clicking an already-selected image cycles its handle mode,...
Definition diagramimageitem.cpp:401
void dragResize(int index, const QPointF &localPos, Qt::KeyboardModifiers mods)
DiagramImageItem::dragResize Verified numerically (all 8 handles, a rotated and non-uniformly scaled ...
Definition diagramimageitem.cpp:891
void editProperty() override
DiagramImageItem::editProperty Open the appropriate dialog to edit this image.
Definition diagramimageitem.cpp:119
static QColor colorForHandleRole(HandleRole role)
DiagramImageItem::rebuildHandles A deliberately small switch compared to QetShapeItem's own version: ...
Definition diagramimageitem.cpp:548
QPixmap pixmap
Definition diagramimageitem.h:42
qreal skewY() const
Definition diagramimageitem.h:121
qreal rotationAngle() const
Definition diagramimageitem.h:117
static QPixmap computeDisplayPixmap(const QPixmap &base, const QRect &cropRect, const QList< ImageTransparentColorDialog::PickedColor > &colors)
DiagramImageItem::computeDisplayPixmap Re-derives what pixmap_ should be from first principles: crop ...
Definition diagramimageitem.cpp:1281
HandleMode m_handleMode
Definition diagramimageitem.h:208
static QPointF cornerPosition(int cornerIndex, qreal w, qreal h)
DiagramImageItem::cornerPosition Matches QetShapeItem::cornerPoint()'s own slot convention exactly (0...
Definition diagramimageitem.cpp:323
void rebuildHandles()
Definition diagramimageitem.cpp:572
void setSkewX(qreal skew)
Definition diagramimageitem.cpp:189
QPointF m_original_pos
Definition diagramimageitem.h:212
void mirror(bool horizontal)
DiagramImageItem::mirror Context-menu action: flips the pixmap itself, not a transform – unlike QetSh...
Definition diagramimageitem.cpp:1690
void handlerMousePressEvent(int index, Qt::KeyboardModifiers mods)
DiagramImageItem::handlerMousePressEvent For a Resize handle, temporarily repositions the pivot for t...
Definition diagramimageitem.cpp:725
QPointF pivot
Definition diagramimageitem.h:48
QPointF handlePosition(int index) const
DiagramImageItem::handlePosition Local-space position of handle at vector index index,...
Definition diagramimageitem.cpp:381
QPointF rawPivot
Definition diagramimageitem.h:58
qreal scaleFactorX() const
Definition diagramimageitem.h:113
void updateModeHint()
DiagramImageItem::updateModeHint Keeps the tooltip in sync with what the next click would do – called...
Definition diagramimageitem.cpp:454
QString currentModeStatusHint() const
DiagramImageItem::currentModeStatusHint One-line reference for whatever handles are visible right now...
Definition diagramimageitem.cpp:492
bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) override
DiagramImageItem::sceneEventFilter Dispatches handle interaction events – structurally identical to Q...
Definition diagramimageitem.cpp:639
int type() const override
Definition diagramimageitem.h:90
qreal skewY
Definition diagramimageitem.h:47
HandleMode nextHandleMode() const
DiagramImageItem::nextHandleMode.
Definition diagramimageitem.cpp:431
void toggleHandleMode()
DiagramImageItem::toggleHandleMode.
Definition diagramimageitem.cpp:418
qreal scaleFactorY
Definition diagramimageitem.h:44
void crop()
DiagramImageItem::crop Context-menu action: opens ImageCropDialog against pixmap_ (the current,...
Definition diagramimageitem.cpp:1834
int m_vector_index
Definition diagramimageitem.h:211
QList< ImageTransparentColorDialog::PickedColor > m_transparent_colors
Definition diagramimageitem.h:198
void refreshInteractionHints()
DiagramImageItem::refreshInteractionHints Keeps the tooltip text current, and – if already being hove...
Definition diagramimageitem.cpp:473
HandleRole
Definition diagramimageitem.h:81
@ SkewEdge
Definition diagramimageitem.h:81
@ Pivot
Definition diagramimageitem.h:81
@ Rotate
Definition diagramimageitem.h:81
@ Resize
Definition diagramimageitem.h:81
void saveImageAs()
DiagramImageItem::saveImageAs Saves the currently displayed pixmap (crop and colour-keyed transparenc...
Definition diagramimageitem.cpp:1071
QPixmap pixmap() const
Definition diagramimageitem.h:96
void saveImagePixmapAs(const QPixmap &pixmap, const QString &dialogTitle, bool hasTransparency)
DiagramImageItem::saveImagePixmapAs Shared by saveImageAs() and saveOriginalImageAs(): prompts for a ...
Definition diagramimageitem.cpp:1102
qreal skewX() const
Definition diagramimageitem.h:119
qreal skewX
Definition diagramimageitem.h:46
virtual QDomElement toXml(QDomDocument &) const
Definition diagramimageitem.cpp:1444
void setScaleFactorX(qreal factor)
DiagramImageItem::setScaleFactorX / setScaleFactorY / setRotationAngle Matching QetShapeItem's own se...
Definition diagramimageitem.cpp:162
bool m_deferHandleReposition
Definition diagramimageitem.h:214
QPointF scaleOnlyOffset(const QPointF &localPoint) const
DiagramImageItem::scaleOnlyOffset / scaleAndShearOffset Verbatim ports of QetShapeItem's own identica...
Definition diagramimageitem.cpp:360
HandleMode
Definition diagramimageitem.h:80
@ RotateSkew
Definition diagramimageitem.h:80
@ Size
Definition diagramimageitem.h:80
void saveOriginalImageAs()
DiagramImageItem::saveOriginalImageAs Saves m_base_pixmap – the true, pristine original,...
Definition diagramimageitem.cpp:1085
void restoreAspectRatio()
DiagramImageItem::restoreAspectRatio Context-menu action, the direct answer to "restoration of aspect...
Definition diagramimageitem.cpp:1051
QRectF boundingRect() const override
DiagramImageItem::boundingRect the outer bounds of the item as a rectangle, if no pixmap are set,...
Definition diagramimageitem.cpp:1296
qreal scaleFactorX
Definition diagramimageitem.h:43
void dragRotateHandle(int cornerIndex, const QPointF &scenePos, Qt::KeyboardModifiers mods)
DiagramImageItem::dragRotateHandle Verified numerically before writing this (all 4 corners,...
Definition diagramimageitem.cpp:962
void setTransparentColor()
DiagramImageItem::setTransparentColor Context-menu action: opens ImageTransparentColorDialog against ...
Definition diagramimageitem.cpp:1758
void dragPivot(const QPointF &localPos)
DiagramImageItem::dragPivot Marks the pivot as user-customized, the same way QetShapeItem's own pivot...
Definition diagramimageitem.cpp:1030
QPixmap pixmap_
Definition diagramimageitem.h:180
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
DiagramImageItem::itemChange.
Definition diagramimageitem.cpp:1238
The QetGraphicsHandlerItem class This graphics item represents a point, destined to be used as an han...
Definition qetgraphicshandleritem.h:37
QetGraphicsItem(QGraphicsItem *parent=nullptr)
Definition qetgraphicsitem.cpp:44