Krita Source Code Documentation
Loading...
Searching...
No Matches
KoSvgTextPropertiesModel.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2024 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KOSVGTEXTPROPERTIESMODEL_H
7#define KOSVGTEXTPROPERTIESMODEL_H
8
9#include <QObject>
10#include <lager/cursor.hpp>
11#include <lager/extra/qt.hpp>
12#include <lager/state.hpp>
13
14#include "KoSvgText.h"
17#include "LineHeightModel.h"
18#include "TextIndentModel.h"
19#include "TabSizeModel.h"
20#include "TextTransformModel.h"
21#include "CssFontStyleModel.h"
25
26#include <kritaflake_export.h>
27
37class KRITAFLAKE_EXPORT KoSvgTextPropertiesModel : public QObject
38{
39 Q_OBJECT
40 Q_PROPERTY(CssLengthPercentageModel *fontSize READ fontSize NOTIFY fontSizeChanged)
41 Q_PROPERTY(LineHeightModel *lineHeight READ lineHeight NOTIFY lineHeightChanged)
42 Q_PROPERTY(CssLengthPercentageModel *letterSpacing READ letterSpacing NOTIFY letterSpacingChanged)
43 Q_PROPERTY(CssLengthPercentageModel *wordSpacing READ wordSpacing NOTIFY wordSpacingChanged)
44 Q_PROPERTY(CssLengthPercentageModel *baselineShiftValue READ baselineShiftValue NOTIFY baselineShiftValueChanged)
45 Q_PROPERTY(TextIndentModel *textIndent READ textIndent NOTIFY textIndentChanged)
46 Q_PROPERTY(TabSizeModel *tabSize READ tabSize NOTIFY tabSizeChanged)
47 Q_PROPERTY(TextTransformModel *textTransform READ textTransform NOTIFY textTransformChanged)
48 Q_PROPERTY(CssFontStyleModel *fontStyle READ fontStyle NOTIFY fontStyleChanged)
49 Q_PROPERTY(FontVariantLigaturesModel *fontVariantLigatures READ fontVariantLigatures NOTIFY fontVariantLigaturesChanged)
50 Q_PROPERTY(FontVariantNumericModel *fontVariantNumeric READ fontVariantNumeric NOTIFY fontVariantNumericChanged)
51 Q_PROPERTY(FontVariantEastAsianModel *fontVariantEastAsian READ fontVariantEastAsian NOTIFY fontVariantEastAsianChanged)
52public:
53 KoSvgTextPropertiesModel(lager::cursor<KoSvgTextPropertyData> _textData = lager::make_state(KoSvgTextPropertyData(), lager::automatic_tag{}));
54
55 lager::cursor<KoSvgTextPropertyData> textData;
56 lager::cursor<KoSvgTextProperties> commonProperties;
57 lager::cursor<KoSvgText::CssLengthPercentage> fontSizeData;
58 lager::cursor<KoSvgText::LineHeightInfo> lineHeightData;
59 lager::cursor<KoSvgText::CssLengthPercentage> letterSpacingData;
60 lager::cursor<KoSvgText::CssLengthPercentage> wordSpacingData;
61 lager::cursor<KoSvgText::CssLengthPercentage> baselineShiftValueData;
62 lager::cursor<KoSvgText::TextIndentInfo> textIndentData;
63 lager::cursor<KoSvgText::TabSizeInfo> tabSizeData;
64 lager::cursor<KoSvgText::TextTransformInfo> textTransformData;
65 lager::cursor<KoSvgText::CssFontStyleData> cssFontStyleData;
66 lager::cursor<KoSvgText::FontFeatureLigatures> fontVariantLigaturesData;
67 lager::cursor<KoSvgText::FontFeatureNumeric> fontVariantNumericData;
68 lager::cursor<KoSvgText::FontFeatureEastAsian> fontVariantEastAsianData;
69
70
73
77
82
86
87 // Whether a given property is set, unset or tristate.
94 Q_ENUM(PropertyState)
95
97 LAGER_QT_CURSOR(PropertyState, fontSizeState);
98 LineHeightModel *lineHeight();
99 LAGER_QT_CURSOR(PropertyState, lineHeightState);
100
101 CssLengthPercentageModel *letterSpacing();
102 LAGER_QT_CURSOR(PropertyState, letterSpacingState);
104 LAGER_QT_CURSOR(PropertyState, wordSpacingState);
105 CssLengthPercentageModel *baselineShiftValue();
106
107 TextIndentModel *textIndent();
108 LAGER_QT_CURSOR(PropertyState, textIndentState);
109 TabSizeModel *tabSize();
110 LAGER_QT_CURSOR(PropertyState, tabSizeState);
111 TextTransformModel *textTransform();
112 LAGER_QT_CURSOR(PropertyState, textTransformState);
113
114 CssFontStyleModel *fontStyle();
115 LAGER_QT_CURSOR(PropertyState, fontStyleState);
116
117 LAGER_QT_CURSOR(int, writingMode);
118 LAGER_QT_CURSOR(PropertyState, writingModeState);
119 LAGER_QT_CURSOR(int, direction);
120 LAGER_QT_CURSOR(PropertyState, directionState);
121 LAGER_QT_CURSOR(int, unicodeBidi);
122 LAGER_QT_CURSOR(PropertyState, unicodeBidiState);
123 LAGER_QT_CURSOR(int, textAlignAll);
124 LAGER_QT_CURSOR(PropertyState, textAlignAllState);
125 LAGER_QT_CURSOR(int, textAlignLast);
126 LAGER_QT_CURSOR(PropertyState, textAlignLastState);
127 LAGER_QT_CURSOR(int, textAnchor);
128 LAGER_QT_CURSOR(PropertyState, textAnchorState);
129
130 LAGER_QT_CURSOR(int, fontWeight);
131 LAGER_QT_CURSOR(PropertyState, fontWeightState);
132 LAGER_QT_CURSOR(int, fontWidth);
133 LAGER_QT_CURSOR(PropertyState, fontWidthState);
134
135 LAGER_QT_CURSOR(bool, fontOpticalSizeLink);
136 LAGER_QT_CURSOR(PropertyState, fontOpticalSizeLinkState);
137
138 LAGER_QT_CURSOR(QVariantMap, axisValues);
139 LAGER_QT_CURSOR(PropertyState, axisValuesState);
140
141 LAGER_QT_CURSOR(QStringList, fontFamilies);
142 LAGER_QT_CURSOR(PropertyState, fontFamiliesState);
143
144 LAGER_QT_CURSOR(bool, textDecorationUnderline);
145 LAGER_QT_CURSOR(bool, textDecorationOverline);
146 LAGER_QT_CURSOR(bool, textDecorationLineThrough);
147 LAGER_QT_CURSOR(PropertyState, textDecorationLineState);
148
149 LAGER_QT_CURSOR(int, textDecorationStyle);
150 LAGER_QT_CURSOR(PropertyState, textDecorationStyleState);
151
152 LAGER_QT_CURSOR(QColor, textDecorationColor);
153 LAGER_QT_CURSOR(PropertyState, textDecorationColorState);
154
155 LAGER_QT_CURSOR(int, textDecorationUnderlinePosHorizontal);
156 LAGER_QT_CURSOR(int, textDecorationUnderlinePosVertical);
157 LAGER_QT_CURSOR(PropertyState, textDecorationUnderlinePositionState);
158
164 Q_ENUM(HangComma)
165 LAGER_QT_CURSOR(bool, hangingPunctuationFirst);
166 LAGER_QT_CURSOR(HangComma, hangingPunctuationComma);
167 LAGER_QT_CURSOR(bool, hangingPunctuationLast);
168 LAGER_QT_CURSOR(PropertyState, hangingPunctuationState);
169
170 LAGER_QT_CURSOR(int, alignmentBaseline);
171 LAGER_QT_CURSOR(PropertyState, alignmentBaselineState);
172 LAGER_QT_CURSOR(int, dominantBaseline);
173 LAGER_QT_CURSOR(PropertyState, dominantBaselineState);
174 LAGER_QT_CURSOR(int, baselineShiftMode);
175 LAGER_QT_CURSOR(PropertyState, baselineShiftState);
176
177 LAGER_QT_CURSOR(int, wordBreak);
178 LAGER_QT_CURSOR(PropertyState, wordBreakState);
179 LAGER_QT_CURSOR(int, lineBreak);
180 LAGER_QT_CURSOR(PropertyState, lineBreakState);
181
182 LAGER_QT_CURSOR(bool, fontSynthesisWeight);
183 LAGER_QT_CURSOR(PropertyState, fontSynthesisWeightState);
184 LAGER_QT_CURSOR(bool, fontSynthesisStyle);
185 LAGER_QT_CURSOR(PropertyState, fontSynthesisStyleState);
186
187
188 LAGER_QT_CURSOR(int, fontVariantPosition);
189 LAGER_QT_CURSOR(PropertyState, fontVariantPositionState);
190 LAGER_QT_CURSOR(int, fontVariantCaps);
191 LAGER_QT_CURSOR(PropertyState, fontVariantCapsState);
192
193 FontVariantLigaturesModel *fontVariantLigatures();
194 LAGER_QT_CURSOR(PropertyState, fontVariantLigaturesState);
195 FontVariantNumericModel *fontVariantNumeric();
196 LAGER_QT_CURSOR(PropertyState, fontVariantNumericState);
197 FontVariantEastAsianModel *fontVariantEastAsian();
198 LAGER_QT_CURSOR(PropertyState, fontVariantEastAsianState);
199
200 LAGER_QT_CURSOR(QVariantMap, fontFeatureSettings);
201 LAGER_QT_CURSOR(PropertyState, fontFeatureSettingsState);
202
203 LAGER_QT_CURSOR(bool, fontKerning);
204 LAGER_QT_CURSOR(PropertyState, fontKerningState);
205
206 LAGER_QT_CURSOR(QString, language);
207 LAGER_QT_CURSOR(PropertyState, languageState);
208
209 LAGER_QT_CURSOR(qreal, fontSizeAdjust);
210 LAGER_QT_CURSOR(PropertyState, fontSizeAdjustState);
211
212 LAGER_QT_CURSOR(int, textCollapse);
213 LAGER_QT_CURSOR(PropertyState, textCollapseState);
214 LAGER_QT_CURSOR(int, textWrap);
215 LAGER_QT_CURSOR(PropertyState, textWrapState);
216
217 LAGER_QT_CURSOR(int, textRendering);
218 LAGER_QT_CURSOR(PropertyState, textRenderingState);
219
221 LAGER_QT_CURSOR(bool, spanSelection);
222
230 Q_INVOKABLE qreal resolvedFontSize(bool fontSize = false);
231
239 Q_INVOKABLE qreal resolvedXHeight(bool fontSize = false);
240
241Q_SIGNALS:
242 void textPropertyChanged();
243 void fontSizeChanged();
244 void lineHeightChanged();
245
246 void letterSpacingChanged();
247 void wordSpacingChanged();
248 void baselineShiftValueChanged();
249
250 void textIndentChanged();
251 void tabSizeChanged();
252 void textTransformChanged();
253 void fontStyleChanged();
254
255 void fontVariantLigaturesChanged();
256 void fontVariantNumericChanged();
257 void fontVariantEastAsianChanged();
258};
259
260#endif // KOSVGTEXTPROPERTIESMODEL_H
@ ForceHang
Force hanging at the start or end of a line, never measured for justification.
The KoSvgTextPropertiesModel class.
lager::cursor< KoSvgText::TabSizeInfo > tabSizeData
lager::cursor< KoSvgTextProperties > commonProperties
lager::cursor< KoSvgTextPropertyData > textData
CssLengthPercentageModel baselineShiftValueModel
CssLengthPercentageModel fontSizeModel
FontVariantEastAsianModel fontVariantEastAsianModel
lager::cursor< KoSvgText::FontFeatureEastAsian > fontVariantEastAsianData
FontVariantLigaturesModel fontVariantLigaturesModel
lager::cursor< KoSvgText::FontFeatureLigatures > fontVariantLigaturesData
lager::cursor< KoSvgText::TextTransformInfo > textTransformData
FontVariantNumericModel fontVariantNumericModel
lager::cursor< KoSvgText::CssLengthPercentage > letterSpacingData
@ PropertyTriState
The property has a mixed value across the range of current properties, the inherited properties are r...
@ PropertyUnset
The property is neither set on the inherited properties or the current properties,...
@ PropertySet
The property is set on the current properties.
lager::cursor< KoSvgText::CssLengthPercentage > baselineShiftValueData
lager::cursor< KoSvgText::CssLengthPercentage > wordSpacingData
lager::cursor< KoSvgText::TextIndentInfo > textIndentData
lager::cursor< KoSvgText::LineHeightInfo > lineHeightData
CssLengthPercentageModel letterSpacingModel
lager::cursor< KoSvgText::CssFontStyleData > cssFontStyleData
CssLengthPercentageModel wordSpacingModel
lager::cursor< KoSvgText::FontFeatureNumeric > fontVariantNumericData
lager::cursor< KoSvgText::CssLengthPercentage > fontSizeData
The KoSvgTextPropertyData struct.