File indexing completed on 2024-06-16 04:17:51

0001 /*
0002  * SPDX-FileCopyrightText: 2023 Alvin Wong <alvin@alvinhc.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef SVG_INLINE_SIZE_CHANGE_COMMAND_H
0008 #define SVG_INLINE_SIZE_CHANGE_COMMAND_H
0009 
0010 #include <kundo2command.h>
0011 
0012 class KoSvgTextShape;
0013 
0014 class SvgInlineSizeChangeCommand : public KUndo2Command
0015 {
0016 public:
0017     SvgInlineSizeChangeCommand(KoSvgTextShape *shape, double inlineSize, KUndo2Command *parent = nullptr);
0018     SvgInlineSizeChangeCommand(KoSvgTextShape *shape,
0019                                double inlineSize,
0020                                double oldInlineSize,
0021                                int anchor,
0022                                int oldAnchor,
0023                                QPointF newPos,
0024                                QPointF oldPos,
0025                                KUndo2Command *parent = nullptr);
0026     ~SvgInlineSizeChangeCommand() override = default;
0027 
0028     void redo() override;
0029     void undo() override;
0030 
0031     int id() const override;
0032     bool mergeWith(const KUndo2Command *other) override;
0033 
0034 private:
0035     void applyInlineSize(double inlineSize, int anchor, QPointF pos, bool undo = false);
0036 
0037 private:
0038     KoSvgTextShape *m_shape;
0039     double m_inlineSize;
0040     double m_oldInlineSize;
0041     int m_anchor;
0042     int m_oldAnchor;
0043     QPointF m_originalPos;
0044     QPointF m_movePos;
0045 };
0046 
0047 #endif /* SVG_INLINE_SIZE_CHANGE_COMMAND_H */