@itwin/core-common 5.3.0-dev.2 → 5.3.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/ElementProps.d.ts +24 -6
- package/lib/cjs/ElementProps.d.ts.map +1 -1
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/annotation/TextBlock.d.ts +1 -26
- package/lib/cjs/annotation/TextBlock.d.ts.map +1 -1
- package/lib/cjs/annotation/TextBlock.js +8 -35
- package/lib/cjs/annotation/TextBlock.js.map +1 -1
- package/lib/cjs/annotation/TextStyle.d.ts +64 -36
- package/lib/cjs/annotation/TextStyle.d.ts.map +1 -1
- package/lib/cjs/annotation/TextStyle.js +63 -44
- package/lib/cjs/annotation/TextStyle.js.map +1 -1
- package/lib/esm/ElementProps.d.ts +24 -6
- package/lib/esm/ElementProps.d.ts.map +1 -1
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/annotation/TextBlock.d.ts +1 -26
- package/lib/esm/annotation/TextBlock.d.ts.map +1 -1
- package/lib/esm/annotation/TextBlock.js +8 -35
- package/lib/esm/annotation/TextBlock.js.map +1 -1
- package/lib/esm/annotation/TextStyle.d.ts +64 -36
- package/lib/esm/annotation/TextStyle.d.ts.map +1 -1
- package/lib/esm/annotation/TextStyle.js +63 -44
- package/lib/esm/annotation/TextStyle.js.map +1 -1
- package/package.json +6 -6
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { DeepReadonlyObject, DeepRequiredObject } from "@itwin/core-bentley";
|
|
5
5
|
import { ColorDefProps } from "../ColorDef";
|
|
6
|
+
import { FontFamilySelector } from "../Fonts";
|
|
6
7
|
/** Predefined markers for list items in text annotations.
|
|
7
8
|
* These values control the appearance of list item markers (e.g., bullet, circle, square, dash, number) that denote the start of a list item in a list.
|
|
8
9
|
* @beta
|
|
@@ -44,6 +45,24 @@ export type TextAnnotationFrameShape = typeof textAnnotationFrameShapes[number];
|
|
|
44
45
|
* @beta
|
|
45
46
|
*/
|
|
46
47
|
export type TextAnnotationFillColor = TextStyleColor | "background" | "none";
|
|
48
|
+
/** Describes the margins around the content inside a [[TextBlock]], measured in meters.
|
|
49
|
+
* All margins default to zero if `undefined`.
|
|
50
|
+
* @beta
|
|
51
|
+
*/
|
|
52
|
+
export interface TextBlockMargins {
|
|
53
|
+
/** The left margin measured in meters. Must be a positive number >= 0. Negative values are disregarded */
|
|
54
|
+
left?: number;
|
|
55
|
+
/** The right margin measured in meters. Must be a positive number >= 0. Negative values are disregarded */
|
|
56
|
+
right?: number;
|
|
57
|
+
/** The top margin measured in meters. Must be a positive number >= 0. Negative values are disregarded */
|
|
58
|
+
top?: number;
|
|
59
|
+
/** The bottom margin measured in meters. Must be a positive number >= 0. Negative values are disregarded */
|
|
60
|
+
bottom?: number;
|
|
61
|
+
}
|
|
62
|
+
/** Describes the relative alignment of text.
|
|
63
|
+
* @beta
|
|
64
|
+
*/
|
|
65
|
+
export type TextJustification = "left" | "center" | "right";
|
|
47
66
|
/** Specifies how to separate the numerator and denominator of a [[FractionRun]], by either a horizontal or diagonal bar.
|
|
48
67
|
* @see [[TextStyleSettingsProps.stackedFractionType]] and [[TextStyleSettings.stackedFractionType]].
|
|
49
68
|
* @beta
|
|
@@ -65,9 +84,9 @@ export interface TextFrameStyleProps {
|
|
|
65
84
|
/** Shape of the frame. Default: "none" */
|
|
66
85
|
shape?: TextAnnotationFrameShape;
|
|
67
86
|
/** The color to fill the shape of the text frame. This fill is applied using [[FillDisplay.Blanking]]. Default: "none" */
|
|
68
|
-
|
|
87
|
+
fillColor?: TextAnnotationFillColor;
|
|
69
88
|
/** The color of the text frame's outline. Default: black */
|
|
70
|
-
|
|
89
|
+
borderColor?: TextStyleColor;
|
|
71
90
|
/** This will be used to set the [[GeometryParams.weight]] property of the frame (in pixels). Default: 1px */
|
|
72
91
|
borderWeight?: number;
|
|
73
92
|
}
|
|
@@ -86,17 +105,17 @@ export interface TextLeaderStyleProps {
|
|
|
86
105
|
*/
|
|
87
106
|
wantElbow?: boolean;
|
|
88
107
|
/** Multiplier used to compute length of the elbow in the leader.
|
|
89
|
-
* The elbowLength is computed in meters as elbowLength * [[
|
|
108
|
+
* The elbowLength is computed in meters as elbowLength * [[textHeight]].
|
|
90
109
|
* Default: 1.0
|
|
91
110
|
*/
|
|
92
111
|
elbowLength?: number;
|
|
93
112
|
/** Multiplier to compute height of the leader terminator.
|
|
94
|
-
* The terminator height is computed in meters as terminatorHeight * [[
|
|
113
|
+
* The terminator height is computed in meters as terminatorHeight * [[textHeight]].
|
|
95
114
|
* Default: 1.0
|
|
96
115
|
*/
|
|
97
116
|
terminatorHeightFactor?: number;
|
|
98
117
|
/** Multiplier to compute width of the leader terminator.
|
|
99
|
-
* The terminator width is computed in meters as terminatorWidth * [[
|
|
118
|
+
* The terminator width is computed in meters as terminatorWidth * [[textHeight]].
|
|
100
119
|
* Default: 1.0
|
|
101
120
|
*/
|
|
102
121
|
terminatorWidthFactor?: number;
|
|
@@ -109,22 +128,22 @@ export interface TextStyleSettingsProps {
|
|
|
109
128
|
* Default: "subcategory".
|
|
110
129
|
*/
|
|
111
130
|
color?: TextStyleColor;
|
|
112
|
-
/** The
|
|
113
|
-
* Default: "" (an invalid font name).
|
|
131
|
+
/** The font stored in an iModel, used to draw the contents of a [[TextRun]].
|
|
132
|
+
* Default: { name: "" } (an invalid font name).
|
|
114
133
|
*/
|
|
115
|
-
|
|
116
|
-
/** The height
|
|
117
|
-
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as
|
|
118
|
-
*
|
|
134
|
+
font?: FontFamilySelector;
|
|
135
|
+
/** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.
|
|
136
|
+
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and
|
|
137
|
+
* textHeight * [[subScriptOffsetFactor]], respectively.
|
|
119
138
|
* Default: 1.0. */
|
|
120
|
-
|
|
139
|
+
textHeight?: number;
|
|
121
140
|
/** Multiplier used to compute the vertical distance between two lines of text.
|
|
122
|
-
* The distance is computed in meters as lineSpacingFactor * [[
|
|
141
|
+
* The distance is computed in meters as lineSpacingFactor * [[textHeight]].
|
|
123
142
|
* Default: 0.5.
|
|
124
143
|
*/
|
|
125
144
|
lineSpacingFactor?: number;
|
|
126
145
|
/** Multiplier used to compute the vertical distance between two paragraphs of text.
|
|
127
|
-
* The distance is computed in meters as paragraphSpacingFactor * [[
|
|
146
|
+
* The distance is computed in meters as paragraphSpacingFactor * [[textHeight]].
|
|
128
147
|
* Default: 0.5.
|
|
129
148
|
*/
|
|
130
149
|
paragraphSpacingFactor?: number;
|
|
@@ -141,7 +160,7 @@ export interface TextStyleSettingsProps {
|
|
|
141
160
|
*/
|
|
142
161
|
isUnderlined?: boolean;
|
|
143
162
|
/** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].
|
|
144
|
-
* The height is computed in meters as stackedFractionScale * [[
|
|
163
|
+
* The height is computed in meters as stackedFractionScale * [[textHeight]].
|
|
145
164
|
* Default: 0.7.
|
|
146
165
|
*/
|
|
147
166
|
stackedFractionScale?: number;
|
|
@@ -150,22 +169,22 @@ export interface TextStyleSettingsProps {
|
|
|
150
169
|
*/
|
|
151
170
|
stackedFractionType?: StackedFractionType;
|
|
152
171
|
/** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].
|
|
153
|
-
* The offset is computed in meters as subScriptOffsetFactor * [[
|
|
172
|
+
* The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].
|
|
154
173
|
* Default: -0.15.
|
|
155
174
|
*/
|
|
156
175
|
subScriptOffsetFactor?: number;
|
|
157
176
|
/** Multiplier used to compute the height of a subscript [[TextRun]].
|
|
158
|
-
* The height is computed as subScriptScale * [[
|
|
177
|
+
* The height is computed as subScriptScale * [[textHeight]].
|
|
159
178
|
* Default: 2/3
|
|
160
179
|
*/
|
|
161
180
|
subScriptScale?: number;
|
|
162
181
|
/** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].
|
|
163
|
-
* The offset is computed in meters as superScriptOffsetFactor * [[
|
|
182
|
+
* The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].
|
|
164
183
|
* Default: -0.5.
|
|
165
184
|
*/
|
|
166
185
|
superScriptOffsetFactor?: number;
|
|
167
186
|
/** Multiplier used to compute the height of a superscript [[TextRun]].
|
|
168
|
-
* The height is computed as superScriptScale * [[
|
|
187
|
+
* The height is computed as superScriptScale * [[textHeight]].
|
|
169
188
|
* Default: 2/3
|
|
170
189
|
*/
|
|
171
190
|
superScriptScale?: number;
|
|
@@ -192,6 +211,9 @@ export interface TextStyleSettingsProps {
|
|
|
192
211
|
* Default: {shape: "none", fill: "none", border: black, borderWeight: 1} for no frame.
|
|
193
212
|
*/
|
|
194
213
|
frame?: TextFrameStyleProps;
|
|
214
|
+
/** The margins to surround the document content.
|
|
215
|
+
* Default: 0 margins on all sides */
|
|
216
|
+
margins?: TextBlockMargins;
|
|
195
217
|
/** The offset (in meters) from the left edge of the text block to the start of the line of text.
|
|
196
218
|
* In lists, the indentation is added to offset of list items.
|
|
197
219
|
* The [[listMarker]] is right justified on [[indentation]] + [[tabInterval]]*(depth - 1/2).
|
|
@@ -203,6 +225,9 @@ export interface TextStyleSettingsProps {
|
|
|
203
225
|
* Default: "1.".
|
|
204
226
|
*/
|
|
205
227
|
listMarker?: ListMarker;
|
|
228
|
+
/** The alignment of the text content.
|
|
229
|
+
* Default: "left". */
|
|
230
|
+
justification?: TextJustification;
|
|
206
231
|
}
|
|
207
232
|
/** A description of the formatting to be applied to a [[TextBlockComponent]].
|
|
208
233
|
* Named instances of these settings can be stored as [AnnotationTextStyle]($backend)s in an iModel.
|
|
@@ -213,20 +238,20 @@ export interface TextStyleSettingsProps {
|
|
|
213
238
|
export declare class TextStyleSettings {
|
|
214
239
|
/** The color of the text. */
|
|
215
240
|
readonly color: TextStyleColor;
|
|
216
|
-
/** The
|
|
241
|
+
/** The font stored in an iModel, used to draw the contents of a [[TextRun]].
|
|
217
242
|
*/
|
|
218
|
-
readonly
|
|
219
|
-
/** The height
|
|
220
|
-
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as
|
|
221
|
-
*
|
|
243
|
+
readonly font: Readonly<Required<FontFamilySelector>>;
|
|
244
|
+
/** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.
|
|
245
|
+
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and
|
|
246
|
+
* textHeight * [[subScriptOffsetFactor]], respectively.
|
|
222
247
|
*/
|
|
223
|
-
readonly
|
|
248
|
+
readonly textHeight: number;
|
|
224
249
|
/** Multiplier used to compute the vertical distance between two lines of text.
|
|
225
|
-
* The distance is computed in meters as lineSpacingFactor * [[
|
|
250
|
+
* The distance is computed in meters as lineSpacingFactor * [[textHeight]] of the [[TextBlock]].
|
|
226
251
|
*/
|
|
227
252
|
readonly lineSpacingFactor: number;
|
|
228
253
|
/** Multiplier used to compute the vertical distance between two paragraphs of text.
|
|
229
|
-
* The distance is computed in meters as paragraphSpacingFactor * [[
|
|
254
|
+
* The distance is computed in meters as paragraphSpacingFactor * the [[TextBlock]]'s [[textHeight]].
|
|
230
255
|
*/
|
|
231
256
|
readonly paragraphSpacingFactor: number;
|
|
232
257
|
/** Specifies whether the content of a [[TextRun]] should be rendered **bold**. */
|
|
@@ -236,28 +261,28 @@ export declare class TextStyleSettings {
|
|
|
236
261
|
/** Specifies whether the content of a [[TextRun]] should be underlined. */
|
|
237
262
|
readonly isUnderlined: boolean;
|
|
238
263
|
/** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].
|
|
239
|
-
* The height is computed in meters as stackedFractionScale * [[
|
|
264
|
+
* The height is computed in meters as stackedFractionScale * [[textHeight]].
|
|
240
265
|
*/
|
|
241
266
|
readonly stackedFractionScale: number;
|
|
242
267
|
/** Specifies how to separate the numerator and denominator of a [[FractionRun]]. */
|
|
243
268
|
readonly stackedFractionType: StackedFractionType;
|
|
244
269
|
/** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].
|
|
245
|
-
* The offset is computed in meters as subScriptOffsetFactor * [[
|
|
270
|
+
* The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].
|
|
246
271
|
*/
|
|
247
272
|
readonly subScriptOffsetFactor: number;
|
|
248
273
|
/** Multiplier used to compute the height of a subscript [[TextRun]].
|
|
249
|
-
* The height is computed as subScriptScale * [[
|
|
274
|
+
* The height is computed as subScriptScale * [[textHeight]].
|
|
250
275
|
*/
|
|
251
276
|
readonly subScriptScale: number;
|
|
252
277
|
/** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].
|
|
253
|
-
* The offset is computed in meters as superScriptOffsetFactor * [[
|
|
278
|
+
* The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].
|
|
254
279
|
*/
|
|
255
280
|
readonly superScriptOffsetFactor: number;
|
|
256
281
|
/** Multiplier used to compute the height of a superscript [[TextRun]].
|
|
257
|
-
* The height is computed as superScriptScale * [[
|
|
282
|
+
* The height is computed as superScriptScale * [[textHeight]].
|
|
258
283
|
*/
|
|
259
284
|
readonly superScriptScale: number;
|
|
260
|
-
/** Multiplier used to compute the width of each glyph, relative to [[
|
|
285
|
+
/** Multiplier used to compute the width of each glyph, relative to [[textHeight]]. */
|
|
261
286
|
readonly widthFactor: number;
|
|
262
287
|
/** Properties describing appearance of leaders in a [[TextAnnotation]].
|
|
263
288
|
* Used when producing geometry for [[TextAnnotation]].
|
|
@@ -282,15 +307,17 @@ export declare class TextStyleSettings {
|
|
|
282
307
|
readonly listMarker: ListMarker;
|
|
283
308
|
/** The frame settings of the [[TextAnnotation]]. */
|
|
284
309
|
readonly frame: Readonly<Required<TextFrameStyleProps>>;
|
|
285
|
-
/**
|
|
310
|
+
/** The margins to surround the document content. */
|
|
311
|
+
readonly margins: Readonly<Required<TextBlockMargins>>;
|
|
312
|
+
/** The alignment of the text content. */
|
|
313
|
+
readonly justification: TextJustification;
|
|
314
|
+
/** A fully-populated JSON representation of the default settings. A real `font` must be provided before use. */
|
|
286
315
|
static defaultProps: DeepReadonlyObject<DeepRequiredObject<TextStyleSettingsProps>>;
|
|
287
316
|
/** Settings initialized to all default values. */
|
|
288
317
|
static defaults: TextStyleSettings;
|
|
289
318
|
private constructor();
|
|
290
319
|
/** Create a copy of these settings, modified according to the properties defined by `alteredProps`. */
|
|
291
320
|
clone(alteredProps?: TextStyleSettingsProps): TextStyleSettings;
|
|
292
|
-
/** Creates a deep copy of the `TextStyleSettingsProps`. */
|
|
293
|
-
static cloneProps(props: TextStyleSettingsProps): TextStyleSettingsProps;
|
|
294
321
|
/** Create settings from their JSON representation. */
|
|
295
322
|
static fromJSON(props?: TextStyleSettingsProps): TextStyleSettings;
|
|
296
323
|
toJSON(): TextStyleSettingsProps;
|
|
@@ -300,6 +327,7 @@ export declare class TextStyleSettings {
|
|
|
300
327
|
*/
|
|
301
328
|
leaderEquals(other: TextLeaderStyleProps): boolean;
|
|
302
329
|
frameEquals(other: TextFrameStyleProps): boolean;
|
|
330
|
+
marginsEqual(other: TextBlockMargins): boolean;
|
|
303
331
|
equals(other: TextStyleSettings): boolean;
|
|
304
332
|
/**
|
|
305
333
|
* Returns a list of validation errors for this instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextStyle.d.ts","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAY,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TextStyle.d.ts","sourceRoot":"","sources":["../../../src/annotation/TextStyle.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* @module Annotation
|
|
7
7
|
*/
|
|
8
8
|
import { ColorDef } from "../ColorDef";
|
|
9
|
+
import { FontType } from "../Fonts";
|
|
9
10
|
/** Predefined markers for list items in text annotations.
|
|
10
11
|
* These values control the appearance of list item markers (e.g., bullet, circle, square, dash, number) that denote the start of a list item in a list.
|
|
11
12
|
* @beta
|
|
@@ -27,6 +28,7 @@ export var ListMarkerEnumerator;
|
|
|
27
28
|
*/
|
|
28
29
|
export const textAnnotationFrameShapes = ["none", "line", "rectangle", "circle", "equilateralTriangle", "diamond", "square", "pentagon", "hexagon", "octagon", "capsule", "roundedRectangle"];
|
|
29
30
|
;
|
|
31
|
+
;
|
|
30
32
|
function deepFreeze(obj) {
|
|
31
33
|
if (obj === null || typeof obj !== "object" || Object.isFrozen(obj))
|
|
32
34
|
return;
|
|
@@ -47,20 +49,20 @@ function deepFreeze(obj) {
|
|
|
47
49
|
export class TextStyleSettings {
|
|
48
50
|
/** The color of the text. */
|
|
49
51
|
color;
|
|
50
|
-
/** The
|
|
52
|
+
/** The font stored in an iModel, used to draw the contents of a [[TextRun]].
|
|
51
53
|
*/
|
|
52
|
-
|
|
53
|
-
/** The height
|
|
54
|
-
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as
|
|
55
|
-
*
|
|
54
|
+
font;
|
|
55
|
+
/** The height of the text, in meters. Many other settings use the text height as the basis for computing their own values.
|
|
56
|
+
* For example, the height and offset from baseline of a subscript [[TextRun]] are computed as textHeight * [[subScriptScale]] and
|
|
57
|
+
* textHeight * [[subScriptOffsetFactor]], respectively.
|
|
56
58
|
*/
|
|
57
|
-
|
|
59
|
+
textHeight;
|
|
58
60
|
/** Multiplier used to compute the vertical distance between two lines of text.
|
|
59
|
-
* The distance is computed in meters as lineSpacingFactor * [[
|
|
61
|
+
* The distance is computed in meters as lineSpacingFactor * [[textHeight]] of the [[TextBlock]].
|
|
60
62
|
*/
|
|
61
63
|
lineSpacingFactor;
|
|
62
64
|
/** Multiplier used to compute the vertical distance between two paragraphs of text.
|
|
63
|
-
* The distance is computed in meters as paragraphSpacingFactor * [[
|
|
65
|
+
* The distance is computed in meters as paragraphSpacingFactor * the [[TextBlock]]'s [[textHeight]].
|
|
64
66
|
*/
|
|
65
67
|
paragraphSpacingFactor;
|
|
66
68
|
/** Specifies whether the content of a [[TextRun]] should be rendered **bold**. */
|
|
@@ -70,28 +72,28 @@ export class TextStyleSettings {
|
|
|
70
72
|
/** Specifies whether the content of a [[TextRun]] should be underlined. */
|
|
71
73
|
isUnderlined;
|
|
72
74
|
/** Multiplier used to compute the height of both the numerator and denominator of a [[FractionRun]].
|
|
73
|
-
* The height is computed in meters as stackedFractionScale * [[
|
|
75
|
+
* The height is computed in meters as stackedFractionScale * [[textHeight]].
|
|
74
76
|
*/
|
|
75
77
|
stackedFractionScale;
|
|
76
78
|
/** Specifies how to separate the numerator and denominator of a [[FractionRun]]. */
|
|
77
79
|
stackedFractionType;
|
|
78
80
|
/** Multiplier used to compute the vertical offset from the baseline for a subscript [[TextRun]].
|
|
79
|
-
* The offset is computed in meters as subScriptOffsetFactor * [[
|
|
81
|
+
* The offset is computed in meters as subScriptOffsetFactor * [[textHeight]].
|
|
80
82
|
*/
|
|
81
83
|
subScriptOffsetFactor;
|
|
82
84
|
/** Multiplier used to compute the height of a subscript [[TextRun]].
|
|
83
|
-
* The height is computed as subScriptScale * [[
|
|
85
|
+
* The height is computed as subScriptScale * [[textHeight]].
|
|
84
86
|
*/
|
|
85
87
|
subScriptScale;
|
|
86
88
|
/** Multiplier used to compute the vertical offset from the baseline for a super [[TextRun]].
|
|
87
|
-
* The offset is computed in meters as superScriptOffsetFactor * [[
|
|
89
|
+
* The offset is computed in meters as superScriptOffsetFactor * [[textHeight]].
|
|
88
90
|
*/
|
|
89
91
|
superScriptOffsetFactor;
|
|
90
92
|
/** Multiplier used to compute the height of a superscript [[TextRun]].
|
|
91
|
-
* The height is computed as superScriptScale * [[
|
|
93
|
+
* The height is computed as superScriptScale * [[textHeight]].
|
|
92
94
|
*/
|
|
93
95
|
superScriptScale;
|
|
94
|
-
/** Multiplier used to compute the width of each glyph, relative to [[
|
|
96
|
+
/** Multiplier used to compute the width of each glyph, relative to [[textHeight]]. */
|
|
95
97
|
widthFactor;
|
|
96
98
|
/** Properties describing appearance of leaders in a [[TextAnnotation]].
|
|
97
99
|
* Used when producing geometry for [[TextAnnotation]].
|
|
@@ -116,11 +118,15 @@ export class TextStyleSettings {
|
|
|
116
118
|
listMarker;
|
|
117
119
|
/** The frame settings of the [[TextAnnotation]]. */
|
|
118
120
|
frame;
|
|
119
|
-
/**
|
|
121
|
+
/** The margins to surround the document content. */
|
|
122
|
+
margins;
|
|
123
|
+
/** The alignment of the text content. */
|
|
124
|
+
justification;
|
|
125
|
+
/** A fully-populated JSON representation of the default settings. A real `font` must be provided before use. */
|
|
120
126
|
static defaultProps = {
|
|
121
127
|
color: "subcategory",
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
font: { name: "", type: FontType.TrueType },
|
|
129
|
+
textHeight: 1,
|
|
124
130
|
lineSpacingFactor: 0.5,
|
|
125
131
|
paragraphSpacingFactor: 0.5,
|
|
126
132
|
isBold: false,
|
|
@@ -145,10 +151,17 @@ export class TextStyleSettings {
|
|
|
145
151
|
listMarker: { enumerator: "1", terminator: "period", case: "lower" },
|
|
146
152
|
frame: {
|
|
147
153
|
shape: "none",
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
fillColor: "none",
|
|
155
|
+
borderColor: ColorDef.black.toJSON(),
|
|
150
156
|
borderWeight: 1,
|
|
151
157
|
},
|
|
158
|
+
margins: {
|
|
159
|
+
left: 0,
|
|
160
|
+
right: 0,
|
|
161
|
+
top: 0,
|
|
162
|
+
bottom: 0
|
|
163
|
+
},
|
|
164
|
+
justification: "left",
|
|
152
165
|
};
|
|
153
166
|
/** Settings initialized to all default values. */
|
|
154
167
|
static defaults = new TextStyleSettings({});
|
|
@@ -157,8 +170,12 @@ export class TextStyleSettings {
|
|
|
157
170
|
defaults = TextStyleSettings.defaultProps;
|
|
158
171
|
}
|
|
159
172
|
this.color = props.color ?? defaults.color;
|
|
160
|
-
|
|
161
|
-
|
|
173
|
+
const font = {
|
|
174
|
+
name: props.font?.name ?? defaults.font.name,
|
|
175
|
+
type: props.font?.type ?? defaults.font.type,
|
|
176
|
+
};
|
|
177
|
+
this.font = Object.freeze(font);
|
|
178
|
+
this.textHeight = props.textHeight ?? defaults.textHeight;
|
|
162
179
|
this.lineSpacingFactor = props.lineSpacingFactor ?? defaults.lineSpacingFactor;
|
|
163
180
|
this.paragraphSpacingFactor = props.paragraphSpacingFactor ?? defaults.paragraphSpacingFactor;
|
|
164
181
|
this.isBold = props.isBold ?? defaults.isBold;
|
|
@@ -184,34 +201,30 @@ export class TextStyleSettings {
|
|
|
184
201
|
this.listMarker = props.listMarker ?? defaults.listMarker;
|
|
185
202
|
const frame = {
|
|
186
203
|
shape: props.frame?.shape ?? defaults.frame.shape,
|
|
187
|
-
|
|
188
|
-
|
|
204
|
+
fillColor: props.frame?.fillColor ?? defaults.frame.fillColor,
|
|
205
|
+
borderColor: props.frame?.borderColor ?? defaults.frame.borderColor,
|
|
189
206
|
borderWeight: props.frame?.borderWeight ?? defaults.frame.borderWeight,
|
|
190
207
|
};
|
|
191
208
|
// Cast to indicate to TypeScript that the frame properties are all defined
|
|
192
209
|
this.frame = Object.freeze(frame);
|
|
210
|
+
this.margins = Object.freeze({
|
|
211
|
+
left: props.margins?.left ?? defaults.margins.left,
|
|
212
|
+
right: props.margins?.right ?? defaults.margins.right,
|
|
213
|
+
top: props.margins?.top ?? defaults.margins.top,
|
|
214
|
+
bottom: props.margins?.bottom ?? defaults.margins.bottom,
|
|
215
|
+
});
|
|
216
|
+
this.justification = props.justification ?? defaults.justification;
|
|
193
217
|
}
|
|
194
218
|
/** Create a copy of these settings, modified according to the properties defined by `alteredProps`. */
|
|
195
219
|
clone(alteredProps) {
|
|
196
220
|
return alteredProps ? new TextStyleSettings(alteredProps, this) : this;
|
|
197
221
|
}
|
|
198
|
-
/** Creates a deep copy of the `TextStyleSettingsProps`. */
|
|
199
|
-
static cloneProps(props) {
|
|
200
|
-
const copy = { ...props };
|
|
201
|
-
if (props.leader) {
|
|
202
|
-
copy.leader = { ...props.leader };
|
|
203
|
-
}
|
|
204
|
-
if (props.frame) {
|
|
205
|
-
copy.frame = { ...props.frame };
|
|
206
|
-
}
|
|
207
|
-
return copy;
|
|
208
|
-
}
|
|
209
222
|
/** Create settings from their JSON representation. */
|
|
210
223
|
static fromJSON(props) {
|
|
211
224
|
return props ? new TextStyleSettings(props) : TextStyleSettings.defaults;
|
|
212
225
|
}
|
|
213
226
|
toJSON() {
|
|
214
|
-
return
|
|
227
|
+
return structuredClone(this);
|
|
215
228
|
}
|
|
216
229
|
/** Compare two [[TextLeaderStyleProps]] for equality.
|
|
217
230
|
* @param other The other leader style properties to compare against.
|
|
@@ -224,21 +237,27 @@ export class TextStyleSettings {
|
|
|
224
237
|
}
|
|
225
238
|
frameEquals(other) {
|
|
226
239
|
return this.frame?.shape === other.shape
|
|
227
|
-
&& this.frame?.
|
|
228
|
-
&& this.frame?.
|
|
240
|
+
&& this.frame?.fillColor === other.fillColor
|
|
241
|
+
&& this.frame?.borderColor === other.borderColor
|
|
229
242
|
&& this.frame?.borderWeight === other.borderWeight;
|
|
230
243
|
}
|
|
244
|
+
marginsEqual(other) {
|
|
245
|
+
return Object.entries(this.margins).every(([key, value]) => value === other[key]);
|
|
246
|
+
}
|
|
231
247
|
equals(other) {
|
|
232
|
-
return this.color === other.color && this.
|
|
233
|
-
&& this.
|
|
248
|
+
return this.color === other.color && this.font.name === other.font.name && this.font.type === other.font.type
|
|
249
|
+
&& this.textHeight === other.textHeight && this.widthFactor === other.widthFactor
|
|
250
|
+
&& this.lineSpacingFactor === other.lineSpacingFactor && this.paragraphSpacingFactor === other.paragraphSpacingFactor
|
|
234
251
|
&& this.isBold === other.isBold && this.isItalic === other.isItalic && this.isUnderlined === other.isUnderlined
|
|
235
252
|
&& this.stackedFractionType === other.stackedFractionType && this.stackedFractionScale === other.stackedFractionScale
|
|
236
253
|
&& this.subScriptOffsetFactor === other.subScriptOffsetFactor && this.subScriptScale === other.subScriptScale
|
|
237
254
|
&& this.superScriptOffsetFactor === other.superScriptOffsetFactor && this.superScriptScale === other.superScriptScale
|
|
238
255
|
&& this.tabInterval === other.tabInterval && this.indentation === other.indentation
|
|
239
256
|
&& this.listMarker.case === other.listMarker.case && this.listMarker.enumerator === other.listMarker.enumerator && this.listMarker.terminator === other.listMarker.terminator
|
|
257
|
+
&& this.justification === other.justification
|
|
240
258
|
&& this.leaderEquals(other.leader)
|
|
241
|
-
&& this.frameEquals(other.frame)
|
|
259
|
+
&& this.frameEquals(other.frame)
|
|
260
|
+
&& this.marginsEqual(other.margins);
|
|
242
261
|
}
|
|
243
262
|
/**
|
|
244
263
|
* Returns a list of validation errors for this instance.
|
|
@@ -252,11 +271,11 @@ export class TextStyleSettings {
|
|
|
252
271
|
*/
|
|
253
272
|
getValidationErrors() {
|
|
254
273
|
const errorMessages = [];
|
|
255
|
-
if (this.
|
|
256
|
-
errorMessages.push("
|
|
274
|
+
if (this.font.name.trim() === "") {
|
|
275
|
+
errorMessages.push("font name must be provided");
|
|
257
276
|
}
|
|
258
|
-
if (this.
|
|
259
|
-
errorMessages.push("
|
|
277
|
+
if (this.textHeight <= 0) {
|
|
278
|
+
errorMessages.push("textHeight must be greater than 0");
|
|
260
279
|
}
|
|
261
280
|
if (this.stackedFractionScale <= 0) {
|
|
262
281
|
errorMessages.push("stackedFractionScale must be greater than 0");
|