20#ifndef RTEXTRENDERER_H
21#define RTEXTRENDERER_H
92 QList<RPainterPath> getPainterPathsForBlock(
93 const QString& blockText,
94 const QList<QTextLayout::FormatRange>& formats,
95 double& horizontalAdvance,
96 double& horizontalAdvanceNoSpacing,
97 double& horizontalAdvanceNoTrailingSpace,
102 QList<RPainterPath> getPainterPathsForBlockTtf(
103 const QString& blockText,
104 const QList<QTextLayout::FormatRange>& formats,
105 double& horizontalAdvance,
106 double& horizontalAdvanceNoSpacing,
107 double& horizontalAdvanceNoTrailingSpace,
112 QList<RPainterPath> getPainterPathsForBlockCad(
113 const QString& blockText,
114 const QList<QTextLayout::FormatRange>& formats,
115 double& horizontalAdvance,
116 double& horizontalAdvanceNoSpacing,
117 double& horizontalAdvanceNoTrailingSpace,
128 void preparePathTransform(
RPainterPath& path,
double cursor,
double cxfScale);
130 QRectF getCharacterRect(
const QString& fontName,
const QChar& ch)
const;
131 QRectF getCharacterRect(
const QFont& font,
const QChar& ch)
const;
133 QString getRichTextForBlock(
const QString& blockText,
134 const QList<QTextLayout::FormatRange>& formats);
137 if (!blockFont.isEmpty()) {
143 if (!blockFont.isEmpty()) {
144 return blockFont.top();
150 if (!blockFontFile.isEmpty()) {
151 blockFontFile.top() = f;
156 if (!blockFontFile.isEmpty()) {
157 return blockFontFile.top();
163 if (!useCadFont.isEmpty()) {
164 useCadFont.top() = on;
169 if (!useCadFont.isEmpty()) {
170 return useCadFont.top();
176 if (!blockBold.isEmpty()) {
177 blockBold.top() = on;
182 if (!blockBold.isEmpty()) {
183 return blockBold.top();
189 if (!blockItalic.isEmpty()) {
190 blockItalic.top() = on;
195 if (!blockItalic.isEmpty()) {
196 return blockItalic.top();
202 if (!blockUnderline.isEmpty()) {
203 blockUnderline.top() = on;
208 if (!blockUnderline.isEmpty()) {
209 return blockUnderline.top();
215 if (!blockHeight.isEmpty()) {
216 blockHeight.top() = h;
221 if (!blockHeight.isEmpty()) {
222 return blockHeight.top();
228 if (!currentFormat.isEmpty()) {
229 currentFormat.top() = f;
234 if (!currentFormat.isEmpty()) {
235 return currentFormat.top();
237 return QTextCharFormat();
Q_DECLARE_METATYPE(RMath *)
#define QRegularExpression
Definition RS.h:53
Represents a box e.g.
Definition RBox.h:46
Color.
Definition RColor.h:43
Extended painter path with a z-level and a pen.
Definition RPainterPath.h:48
Stores and manages all data that defines the geometry and appearance of a text based entity (text,...
Definition RTextBasedData.h:68
Renders formatted text into painter paths.
Definition RTextRenderer.h:41
QStack< QTextCharFormat > currentFormat
Definition RTextRenderer.h:373
static void lockForDrawing()
Definition RTextRenderer.h:83
static QString rxFontChangeCadStr
Definition RTextRenderer.h:300
static QString rxAlignmentChangeBlockStr
Definition RTextRenderer.h:298
static QRegularExpression escDegree
Definition RTextRenderer.h:317
static QString rxStackedTextStr
Definition RTextRenderer.h:270
QList< RTextLayout > textLayouts
Definition RTextRenderer.h:361
static QRegularExpression rxStrikethroughOff
Definition RTextRenderer.h:289
static QRegularExpression rxAll
Definition RTextRenderer.h:343
QStack< double > blockHeight
Definition RTextRenderer.h:374
Target
Definition RTextRenderer.h:43
static QRegularExpression rxXFeed
Definition RTextRenderer.h:264
static QRegularExpression rxLineFeed
Definition RTextRenderer.h:242
static QRegularExpression rxStrikethroughOn
Definition RTextRenderer.h:287
static QString rxUnderlineOffStr
Definition RTextRenderer.h:284
const RTextBasedData & textData
Definition RTextRenderer.h:353
static QString rxBackslashStr
Definition RTextRenderer.h:308
static QString rxNoOpEndStr
Definition RTextRenderer.h:332
static QRegularExpression rxAlignmentRight
Definition RTextRenderer.h:248
QStack< bool > blockBold
Definition RTextRenderer.h:377
static QString rxAlignmentRightStr
Definition RTextRenderer.h:247
QStack< QString > blockFontFile
Definition RTextRenderer.h:376
static QRegularExpression rxCurlyClose
Definition RTextRenderer.h:313
static QString rxColorChangeIndexStr
Definition RTextRenderer.h:272
bool getUseCadFont() const
Definition RTextRenderer.h:168
static QString rxUnderlineStr
Definition RTextRenderer.h:326
QStack< bool > blockUnderline
Definition RTextRenderer.h:379
static QRegularExpression rxNonBreakingSpace
Definition RTextRenderer.h:277
static QString rxFontChangeTtfStr
Definition RTextRenderer.h:302
bool getBlockItalic() const
Definition RTextRenderer.h:194
QString richText
Definition RTextRenderer.h:369
static QString rxNoOpStr
Definition RTextRenderer.h:330
double getBlockHeight() const
Definition RTextRenderer.h:220
static QString rxObliqueAngleChangeStr
Definition RTextRenderer.h:292
static QRegularExpression rxOverlineOff
Definition RTextRenderer.h:281
static QString rxAlignmentCenterStr
Definition RTextRenderer.h:245
static QRegularExpression rxTabIN
Definition RTextRenderer.h:260
static QString escDegreeStr
Definition RTextRenderer.h:316
static QString rxTabMMStr
Definition RTextRenderer.h:257
static QString rxTrackChangeStr
Definition RTextRenderer.h:294
void setCurrentFormat(QTextCharFormat f)
Definition RTextRenderer.h:227
static QString escUnderlineStr
Definition RTextRenderer.h:328
static QRegularExpression rxTrackChange
Definition RTextRenderer.h:295
static QRegularExpression rxNoOp
Definition RTextRenderer.h:331
static QRegularExpression rxColorChangeIndex
Definition RTextRenderer.h:273
QString getBlockFontFile() const
Definition RTextRenderer.h:155
RBox boundingBox
Definition RTextRenderer.h:365
void setBlockFont(const QString &f)
Definition RTextRenderer.h:136
QTextCharFormat getCurrentFormat() const
Definition RTextRenderer.h:233
void setBlockUnderline(bool on)
Definition RTextRenderer.h:201
static QString rxXAlignmentRightStr
Definition RTextRenderer.h:253
static QRegularExpression rxUnderlineOn
Definition RTextRenderer.h:283
static QRegularExpression rxNoOpEnd
Definition RTextRenderer.h:333
static QString rxColorChangeCustomStr
Definition RTextRenderer.h:274
static QRegularExpression rxAlignmentLeft
Definition RTextRenderer.h:244
static QString rxOptionalBreakStr
Definition RTextRenderer.h:338
static QRegularExpression rxTabMM
Definition RTextRenderer.h:258
double getHeight() const
Definition RTextRenderer.h:71
static QString rxUnderlineChangeStr
Definition RTextRenderer.h:267
static QString rxUnicodeStr
Definition RTextRenderer.h:336
static QString rxPlusMinusStr
Definition RTextRenderer.h:318
static QString rxWidthChangeStr
Definition RTextRenderer.h:290
static QRegularExpression rxColorChangeCustom
Definition RTextRenderer.h:275
QList< RPainterPath > painterPaths
Definition RTextRenderer.h:358
void setBlockBold(bool on)
Definition RTextRenderer.h:175
static QString escPlusMinusStr
Definition RTextRenderer.h:320
static QRegularExpression rxDegree
Definition RTextRenderer.h:315
void setBlockHeight(double h)
Definition RTextRenderer.h:214
static QRegularExpression rxBeginBlock
Definition RTextRenderer.h:305
static QString escDiameterStr
Definition RTextRenderer.h:324
static QRegularExpression rxAlignmentChangeBlock
Definition RTextRenderer.h:299
static QRegularExpression rxWidthChange
Definition RTextRenderer.h:291
static QRegularExpression escNoOp
Definition RTextRenderer.h:335
static QRegularExpression rxEndBlock
Definition RTextRenderer.h:307
static QRegularExpression rxCurlyOpen
Definition RTextRenderer.h:311
static QString rxAllBreakStr
Definition RTextRenderer.h:342
bool getBlockUnderline() const
Definition RTextRenderer.h:207
void setUseCadFont(bool on)
Definition RTextRenderer.h:162
RBox getBoundingBox() const
Definition RTextRenderer.h:67
static QRegularExpression rxUnderlineChange
Definition RTextRenderer.h:268
static QRegularExpression escPlusMinus
Definition RTextRenderer.h:321
static QRegularExpression escUnderline
Definition RTextRenderer.h:329
static QRegularExpression escDiameter
Definition RTextRenderer.h:325
static QRegularExpression rxUnicode
Definition RTextRenderer.h:337
static QString rxXSpaceMTextStr
Definition RTextRenderer.h:255
static QChar chDegree
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RTextRenderer.h:346
static QString rxTabINStr
Definition RTextRenderer.h:259
static QString rxXAlignmentLeftStr
Definition RTextRenderer.h:249
static void unlockForDrawing()
Definition RTextRenderer.h:87
static QString rxUnderlineOnStr
Definition RTextRenderer.h:282
static QRegularExpression rxAlignmentCenter
Definition RTextRenderer.h:246
bool draft
Definition RTextRenderer.h:368
void setBlockFontFile(const QString &f)
Definition RTextRenderer.h:149
static QRegularExpression rxXAlignmentCenter
Definition RTextRenderer.h:252
static QRegularExpression rxXAlignmentLeft
Definition RTextRenderer.h:250
static QRegularExpression rxXSpaceMText
Definition RTextRenderer.h:256
static QRegularExpression rxObliqueAngleChange
Definition RTextRenderer.h:293
static QString rxBeginBlockStr
Definition RTextRenderer.h:304
static QString escNoOpStr
Definition RTextRenderer.h:334
static QRegularExpression rxAllBreak
Definition RTextRenderer.h:344
static QString rxXFeedStr
Definition RTextRenderer.h:263
static QString rxOverlineOffStr
Definition RTextRenderer.h:280
static QRegularExpression rxXAlignmentRight
Definition RTextRenderer.h:254
double getWidth() const
Definition RTextRenderer.h:75
QList< RTextLayout > getTextLayouts() const
Definition RTextRenderer.h:59
static QString rxHeightChangeStr
Definition RTextRenderer.h:265
static QRegularExpression rxBackslash
Definition RTextRenderer.h:309
bool getBlockBold() const
Definition RTextRenderer.h:181
static QMutex m
Definition RTextRenderer.h:351
static QString rxParagraphFeedStr
Definition RTextRenderer.h:261
static QString rxCurlyCloseStr
Definition RTextRenderer.h:312
static QString rxNonBreakingSpaceStr
Definition RTextRenderer.h:276
static QRegularExpression rxFontChangeCad
Definition RTextRenderer.h:301
QStack< QStringList > openTags
Definition RTextRenderer.h:380
QString getRichText() const
Definition RTextRenderer.h:79
static QRegularExpression rxUnderlineOff
Definition RTextRenderer.h:285
static QRegularExpression rxFontChangeTtf
Definition RTextRenderer.h:303
static QRegularExpression rxParagraphFeed
Definition RTextRenderer.h:262
static QRegularExpression rxPlusMinus
Definition RTextRenderer.h:319
double height
Definition RTextRenderer.h:366
static QRegularExpression rxOptionalBreak
Definition RTextRenderer.h:339
static QRegularExpression rxHeightChange
Definition RTextRenderer.h:266
QStack< QString > blockFont
Definition RTextRenderer.h:375
static QString rxAllStr
Definition RTextRenderer.h:341
static QRegularExpression rxOverlineOn
Definition RTextRenderer.h:279
static QString rxDiameterStr
Definition RTextRenderer.h:322
QList< RPainterPath > getPainterPaths() const
Definition RTextRenderer.h:55
static QRegularExpression rxAlignmentChange
Definition RTextRenderer.h:297
static QChar chDiameter
Definition RTextRenderer.h:348
static QString rxOverlineOnStr
Definition RTextRenderer.h:278
static QRegularExpression rxStackedText
Definition RTextRenderer.h:271
static QString rxAlignmentChangeStr
Definition RTextRenderer.h:296
static QRegularExpression rxDiameter
Definition RTextRenderer.h:323
static QString rxLineFeedStr
Definition RTextRenderer.h:241
static QString rxCurlyOpenStr
Definition RTextRenderer.h:310
void setBlockItalic(bool on)
Definition RTextRenderer.h:188
QStack< bool > blockItalic
Definition RTextRenderer.h:378
double width
Definition RTextRenderer.h:367
static QString rxEndBlockStr
Definition RTextRenderer.h:306
static QString rxStrikethroughOffStr
Definition RTextRenderer.h:288
static QString rxAlignmentLeftStr
Definition RTextRenderer.h:243
static QRegularExpression rxUnderline
Definition RTextRenderer.h:327
static QString rxXAlignmentCenterStr
Definition RTextRenderer.h:251
static QString rxDegreeStr
Definition RTextRenderer.h:314
QString getBlockFont() const
Definition RTextRenderer.h:142
static QChar chPlusMinus
Definition RTextRenderer.h:347
Target target
Definition RTextRenderer.h:355
QStack< bool > useCadFont
Definition RTextRenderer.h:372
double fontHeightFactor
Definition RTextRenderer.h:370
QList< QTransform > lineBlockTransforms
Definition RTextRenderer.h:363
static QString rxStrikethroughOnStr
Definition RTextRenderer.h:286
#define QCADCORE_EXPORT
Definition core_global.h:10