Krita Source Code Documentation
Loading...
Searching...
No Matches
SvgTextTool.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 *
3 SPDX-FileCopyrightText: 2017 Boudewijn Rempt <boud@valdyas.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef SVG_TEXT_TOOL
9#define SVG_TEXT_TOOL
10
11
12#include <KConfigGroup>
13#include <KoToolBase.h>
14#include <QPointer>
15
17
19#include <KisSignalMapper.h>
20
21#include "SvgTextCursor.h"
25
26#include <memory>
27
28class KoSelection;
29class SvgTextEditor;
30class KoSvgTextShape;
32class KUndo2Command;
33class QActionGroup;
34
35class SvgTextTool : public KoToolBase
36{
37 Q_OBJECT
38
41
42public:
44 ~SvgTextTool() override;
46 QRectF decorationsRect() const override;
48 void paint(QPainter &gc, const KoViewConverter &converter) override;
50 void mousePressEvent(KoPointerEvent *event) override;
52 void mouseDoubleClickEvent(KoPointerEvent *event) override;
54 void mouseTripleClickEvent(KoPointerEvent *event) override;
56 void mouseMoveEvent(KoPointerEvent *event) override;
58 void mouseReleaseEvent(KoPointerEvent *event) override;
59
60 void keyPressEvent(QKeyEvent *event) override;
61 void keyReleaseEvent(QKeyEvent *event) override;
62
63 void focusInEvent(QFocusEvent *event) override;
64 void focusOutEvent(QFocusEvent *event) override;
65
67 void activate(const QSet<KoShape *> &shapes) override;
69 void deactivate() override;
70
72
73 QVariant inputMethodQuery(Qt::InputMethodQuery query) const override;
74 void inputMethodEvent(QInputMethodEvent *event) override;
75
77 void copy() const override;
79 void deleteSelection() override;
81 bool paste() override;
83 bool hasSelection() override;
84
85 bool selectAll() override;
86
87 void deselect() override;
89 KoToolSelection * selection() override;
90
91 void requestStrokeEnd() override;
92 void requestStrokeCancellation() override;
93
94protected:
96 virtual QWidget *createOptionWidget() override;
97
98 KoSelection *koSelection() const;
100
101private:
102 qreal grabSensitivityInPt() const;
103
105
106 void addMappedAction(KisSignalMapper* mapper, const QString &actionName, const int value, QActionGroup *group = nullptr);
107
108private Q_SLOTS:
109
110 void showEditor();
111 void textUpdated(KoSvgTextShape *shape, const QString &svg, const QString &defs);
112
117 void showGlyphPalette();
122 void updateGlyphPalette();
123
131 void insertRichText(KoSvgTextShape *richText, bool replaceLastGlyph = false);
132
138 QString generateDefs(const KoSvgTextProperties &properties = KoSvgTextProperties());
139
145
151
157 void slotUpdateCursorDecoration(QRectF updateRect);
158
163 void slotConvertType(int index);
164
170
176
181 void slotTextTypeUpdated();
182
188 void slotMoveTextSelection(int index);
189
195
196private:
197 enum class DragMode {
198 None = 0,
199 Create,
200 Select,
202 Move,
206 };
214
215 QScopedPointer<SvgTextToolOptionsManager>m_optionManager;
220 std::unique_ptr<KoInteractionStrategy> m_interactionStrategy;
223
224 QScopedPointer<KisSignalMapper> m_textTypeSignalsMapper;
225 QScopedPointer<KisSignalMapper> m_typeSettingMovementMapper;
226
227
230 QScopedPointer<KoSvgTextShapeOutlineHelper> m_textOutlineHelper;
232
234
243
244};
245
246#endif
float value(const T *src, size_t ch)
The PopupWidgetInterface abstract class defines the basic interface that will be used by all popup wi...
The KisSignalMapper class bundles signals from identifiable senders.
KoCanvasBase * canvas() const
Returns the canvas the tool is working on.
The SvgTextOnPathDecorationHelper class.
void activate(const QSet< KoShape * > &shapes) override
reimplemented from KoToolBase
void mouseTripleClickEvent(KoPointerEvent *event) override
reimplemented from KoToolBase
void copy() const override
reimplemented from superclass
bool selectAll() override
selectAll select all data the tool can select.
KisSignalAutoConnectionsStore m_canvasConnections
~SvgTextTool() override
void requestStrokeCancellation() override
void inputMethodEvent(QInputMethodEvent *event) override
QScopedPointer< KisSignalMapper > m_textTypeSignalsMapper
void mouseMoveEvent(KoPointerEvent *event) override
reimplemented from KoToolBase
std::unique_ptr< KoInteractionStrategy > m_interactionStrategy
void keyPressEvent(QKeyEvent *event) override
void requestStrokeEnd() override
void slotTextTypeUpdated()
slotTextTypeUpdated Update the text type in the tool options.
QPointer< GlyphPaletteDialog > m_glyphPalette
QScopedPointer< SvgTextToolOptionsManager > m_optionManager
QCursor m_base_cursor
KoSelection * koSelection() const
DragMode m_dragging
void mouseReleaseEvent(KoPointerEvent *event) override
reimplemented from KoToolBase
void slotUpdateVisualCursor()
slotUpdateVisualCursor update the visual cursor mode on the text cursor.
QString generateDefs(const KoSvgTextProperties &properties=KoSvgTextProperties())
generateDefs This generates a defs section with the appropriate css and css strings assigned.
qreal grabSensitivityInPt() const
void deleteSelection() override
reimplemented from superclass
QCursor m_text_inline_horizontal
QCursor m_ibeam_horizontal
KoSvgTextShape * selectedShape() const
QPointF m_lastMousePos
QCursor m_ibeam_horizontal_done
SvgTextTool(KoCanvasBase *canvas)
QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
void slotShapeSelectionChanged()
selectionChanged called when the canvas selection is changed.
void showGlyphPalette()
showGlyphPalette Shows the glyph palette dialog.
QCursor m_text_inline_vertical
QPainterPath m_hoveredShapeHighlightRect
void focusInEvent(QFocusEvent *event) override
bool hasSelection() override
reimplemented from superclass
SvgTextOnPathDecorationHelper m_textOnPathHelper
KoSvgTextProperties propertiesForNewText() const
propertiesForNewText get the text properties that should be used for new text.
void updateGlyphPalette()
updateGlyphPalette update the glyph palette dialog from the current selection.
void mouseDoubleClickEvent(KoPointerEvent *event) override
reimplemented from superclass
bool m_strategyAddingCommand
KisPopupWidgetInterface * popupWidget() override
HighlightItem m_highlightItem
void focusOutEvent(QFocusEvent *event) override
void updateTextPathHelper()
KoToolSelection * selection() override
reimplemented from superclass
void slotUpdateTextPasteBehaviour()
slotUpdateTextPasteBehaviour update the default text paste behaviour.
void deselect() override
deselect the tool should clear the selection if it has one.
QCursor m_ibeam_vertical
virtual QWidget * createOptionWidget() override
reimplemented from KoToolBase
void insertRichText(KoSvgTextShape *richText, bool replaceLastGlyph=false)
insertRichText Insert a rich text shape, used by the glyph palette..
QCursor m_text_in_shape
void textUpdated(KoSvgTextShape *shape, const QString &svg, const QString &defs)
void deactivate() override
reimplemented from KoToolBase
void mousePressEvent(KoPointerEvent *event) override
reimplemented from KoToolBase
void slotUpdateCursorDecoration(QRectF updateRect)
updateCursor update the canvas decorations in a particular update rect for the text cursor.
QCursor m_text_on_path
void showEditor()
QScopedPointer< KisSignalMapper > m_typeSettingMovementMapper
void slotMoveTextSelection(int index)
slotMoveTextSelection Move the start of the selection in typesetting mode by image 1 pix.
void paint(QPainter &gc, const KoViewConverter &converter) override
reimplemented from KoToolBase
SvgTextCursor m_textCursor
KoSvgText::WritingMode writingMode() const
QScopedPointer< KoSvgTextShapeOutlineHelper > m_textOutlineHelper
QRectF decorationsRect() const override
reimplemented from KoToolBase
bool paste() override
reimplemented from superclass
void slotUpdateTypeSettingMode()
slotUpdateTypeSettingMode Enable typesetting mode from the tool options.
void slotConvertType(int index)
slotConvertType
void addMappedAction(KisSignalMapper *mapper, const QString &actionName, const int value, QActionGroup *group=nullptr)
QPointer< SvgTextEditor > m_editor
void keyReleaseEvent(QKeyEvent *event) override
The SvgTextCursor class.