@itwin/core-backend 5.2.0-dev.8 → 5.3.0-dev.2

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.
Files changed (198) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +2 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BackendLoggerCategory.d.ts +6 -0
  6. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  7. package/lib/cjs/BackendLoggerCategory.js +6 -0
  8. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  9. package/lib/cjs/BriefcaseManager.d.ts +57 -3
  10. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  11. package/lib/cjs/BriefcaseManager.js +151 -42
  12. package/lib/cjs/BriefcaseManager.js.map +1 -1
  13. package/lib/cjs/CloudSqlite.d.ts +4 -0
  14. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  15. package/lib/cjs/CloudSqlite.js.map +1 -1
  16. package/lib/cjs/ECDb.d.ts +8 -0
  17. package/lib/cjs/ECDb.d.ts.map +1 -1
  18. package/lib/cjs/ECDb.js +22 -0
  19. package/lib/cjs/ECDb.js.map +1 -1
  20. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  21. package/lib/cjs/GeographicCRSServices.js +2 -0
  22. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  23. package/lib/cjs/IModelDb.d.ts +54 -3
  24. package/lib/cjs/IModelDb.d.ts.map +1 -1
  25. package/lib/cjs/IModelDb.js +87 -9
  26. package/lib/cjs/IModelDb.js.map +1 -1
  27. package/lib/cjs/IModelHost.d.ts +11 -1
  28. package/lib/cjs/IModelHost.d.ts.map +1 -1
  29. package/lib/cjs/IModelHost.js +5 -0
  30. package/lib/cjs/IModelHost.js.map +1 -1
  31. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts +1 -5
  32. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts.map +1 -1
  33. package/lib/cjs/IModelIncrementalSchemaLocater.js +0 -6
  34. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  35. package/lib/cjs/SqliteChangesetReader.d.ts +8 -0
  36. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  37. package/lib/cjs/SqliteChangesetReader.js +11 -0
  38. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  39. package/lib/cjs/StashManager.d.ts +175 -0
  40. package/lib/cjs/StashManager.d.ts.map +1 -0
  41. package/lib/cjs/StashManager.js +306 -0
  42. package/lib/cjs/StashManager.js.map +1 -0
  43. package/lib/cjs/TxnManager.d.ts +226 -15
  44. package/lib/cjs/TxnManager.d.ts.map +1 -1
  45. package/lib/cjs/TxnManager.js +249 -23
  46. package/lib/cjs/TxnManager.js.map +1 -1
  47. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +10 -1
  48. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  49. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +15 -6
  50. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  51. package/lib/cjs/annotations/LeaderGeometry.d.ts +3 -2
  52. package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
  53. package/lib/cjs/annotations/LeaderGeometry.js +5 -4
  54. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  55. package/lib/cjs/annotations/TextAnnotationElement.d.ts +52 -24
  56. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
  57. package/lib/cjs/annotations/TextAnnotationElement.js +49 -59
  58. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  59. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +2 -0
  60. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -1
  61. package/lib/cjs/annotations/TextAnnotationGeometry.js +26 -19
  62. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  63. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -1
  64. package/lib/cjs/annotations/TextBlockGeometry.js +8 -0
  65. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  66. package/lib/cjs/annotations/TextBlockLayout.d.ts +49 -36
  67. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
  68. package/lib/cjs/annotations/TextBlockLayout.js +204 -135
  69. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  70. package/lib/cjs/internal/ChannelAdmin.js +1 -1
  71. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  72. package/lib/cjs/internal/Symbols.d.ts +1 -0
  73. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  74. package/lib/cjs/internal/Symbols.js +2 -1
  75. package/lib/cjs/internal/Symbols.js.map +1 -1
  76. package/lib/cjs/internal/annotations/fields.d.ts +2 -12
  77. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  78. package/lib/cjs/internal/annotations/fields.js +49 -45
  79. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  80. package/lib/cjs/workspace/Workspace.d.ts +1 -1
  81. package/lib/cjs/workspace/Workspace.js.map +1 -1
  82. package/lib/esm/BackendHubAccess.d.ts +2 -0
  83. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  84. package/lib/esm/BackendHubAccess.js.map +1 -1
  85. package/lib/esm/BackendLoggerCategory.d.ts +6 -0
  86. package/lib/esm/BackendLoggerCategory.d.ts.map +1 -1
  87. package/lib/esm/BackendLoggerCategory.js +6 -0
  88. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  89. package/lib/esm/BriefcaseManager.d.ts +57 -3
  90. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  91. package/lib/esm/BriefcaseManager.js +152 -43
  92. package/lib/esm/BriefcaseManager.js.map +1 -1
  93. package/lib/esm/CloudSqlite.d.ts +4 -0
  94. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  95. package/lib/esm/CloudSqlite.js.map +1 -1
  96. package/lib/esm/ECDb.d.ts +8 -0
  97. package/lib/esm/ECDb.d.ts.map +1 -1
  98. package/lib/esm/ECDb.js +22 -0
  99. package/lib/esm/ECDb.js.map +1 -1
  100. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  101. package/lib/esm/GeographicCRSServices.js +2 -0
  102. package/lib/esm/GeographicCRSServices.js.map +1 -1
  103. package/lib/esm/IModelDb.d.ts +54 -3
  104. package/lib/esm/IModelDb.d.ts.map +1 -1
  105. package/lib/esm/IModelDb.js +88 -10
  106. package/lib/esm/IModelDb.js.map +1 -1
  107. package/lib/esm/IModelHost.d.ts +11 -1
  108. package/lib/esm/IModelHost.d.ts.map +1 -1
  109. package/lib/esm/IModelHost.js +5 -0
  110. package/lib/esm/IModelHost.js.map +1 -1
  111. package/lib/esm/IModelIncrementalSchemaLocater.d.ts +1 -5
  112. package/lib/esm/IModelIncrementalSchemaLocater.d.ts.map +1 -1
  113. package/lib/esm/IModelIncrementalSchemaLocater.js +0 -6
  114. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  115. package/lib/esm/SqliteChangesetReader.d.ts +8 -0
  116. package/lib/esm/SqliteChangesetReader.d.ts.map +1 -1
  117. package/lib/esm/SqliteChangesetReader.js +11 -0
  118. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  119. package/lib/esm/StashManager.d.ts +175 -0
  120. package/lib/esm/StashManager.d.ts.map +1 -0
  121. package/lib/esm/StashManager.js +301 -0
  122. package/lib/esm/StashManager.js.map +1 -0
  123. package/lib/esm/TxnManager.d.ts +226 -15
  124. package/lib/esm/TxnManager.d.ts.map +1 -1
  125. package/lib/esm/TxnManager.js +247 -21
  126. package/lib/esm/TxnManager.js.map +1 -1
  127. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +10 -1
  128. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  129. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +13 -5
  130. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  131. package/lib/esm/annotations/LeaderGeometry.d.ts +3 -2
  132. package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
  133. package/lib/esm/annotations/LeaderGeometry.js +5 -4
  134. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  135. package/lib/esm/annotations/TextAnnotationElement.d.ts +52 -24
  136. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
  137. package/lib/esm/annotations/TextAnnotationElement.js +51 -61
  138. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  139. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +2 -0
  140. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -1
  141. package/lib/esm/annotations/TextAnnotationGeometry.js +26 -19
  142. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  143. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -1
  144. package/lib/esm/annotations/TextBlockGeometry.js +8 -0
  145. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  146. package/lib/esm/annotations/TextBlockLayout.d.ts +49 -36
  147. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
  148. package/lib/esm/annotations/TextBlockLayout.js +205 -136
  149. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  150. package/lib/esm/internal/ChannelAdmin.js +1 -1
  151. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  152. package/lib/esm/internal/Symbols.d.ts +1 -0
  153. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  154. package/lib/esm/internal/Symbols.js +1 -0
  155. package/lib/esm/internal/Symbols.js.map +1 -1
  156. package/lib/esm/internal/annotations/fields.d.ts +2 -12
  157. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  158. package/lib/esm/internal/annotations/fields.js +51 -47
  159. package/lib/esm/internal/annotations/fields.js.map +1 -1
  160. package/lib/esm/test/AnnotationTestUtils.d.ts +5 -1
  161. package/lib/esm/test/AnnotationTestUtils.d.ts.map +1 -1
  162. package/lib/esm/test/AnnotationTestUtils.js +6 -1
  163. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  164. package/lib/esm/test/annotations/Fields.test.js +163 -46
  165. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  166. package/lib/esm/test/annotations/LeaderGeometry.test.js +12 -10
  167. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  168. package/lib/esm/test/annotations/TextAnnotation.test.js +299 -43
  169. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  170. package/lib/esm/test/annotations/TextBlock.test.js +453 -86
  171. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  172. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts +46 -0
  173. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -1
  174. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +20 -2
  175. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  176. package/lib/esm/test/ecdb/ECDb.test.js +71 -1
  177. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  178. package/lib/esm/test/hubaccess/Rebase.test.d.ts +2 -0
  179. package/lib/esm/test/hubaccess/Rebase.test.d.ts.map +1 -0
  180. package/lib/esm/test/hubaccess/Rebase.test.js +640 -0
  181. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -0
  182. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js +20 -20
  183. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  184. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +3 -3
  185. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  186. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts +16 -1
  187. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +1 -1
  188. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +47 -0
  189. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  190. package/lib/esm/test/standalone/ChangeMerge.test.js +15 -19
  191. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  192. package/lib/esm/test/standalone/ChangesetReader.test.js +131 -1
  193. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  194. package/lib/esm/test/standalone/MergeConflict.test.js +3 -3
  195. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  196. package/lib/esm/workspace/Workspace.d.ts +1 -1
  197. package/lib/esm/workspace/Workspace.js.map +1 -1
  198. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"TextAnnotationGeometry.js","sourceRoot":"","sources":["../../../src/annotations/TextAnnotationGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ElementGeometry\n */\n\nimport { ColorDef, ElementGeometry, FillDisplay, GeometryParams, TextAnnotation, TextAnnotationProps, TextStyleSettings } from \"@itwin/core-common\";\nimport { TextBlockLayout, TextStyleResolver } from \"./TextBlockLayout\";\nimport { LineString3d, PointString3d, Range2d, Transform } from \"@itwin/core-geometry\";\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { produceTextBlockGeometry } from \"./TextBlockGeometry\";\nimport { appendFrameToBuilder, computeIntervalPoints } from \"./FrameGeometry\";\nimport { appendLeadersToBuilder } from \"./LeaderGeometry\";\n\n/**\n * Properties required to compute the geometry of a text annotation.\n * @beta\n * @see [[appendTextAnnotationGeometry]] to append the geometry to an [[ElementGeometry.Builder]].\n */\nexport interface AppendTextAnnotationGeometryArgs {\n /** The annotation to be drawn. Be sure to include a TextBlock with runs or no geometry will be produced. */\n annotationProps: TextAnnotationProps;\n /** Layout provided by calling [[layoutTextBlock]] */\n layout: TextBlockLayout;\n /** [[TextStyleResolver]] used to get styling and scale information for creating geometry. */\n textStyleResolver: TextStyleResolver;\n /** Builder that will be added to in place */\n builder: ElementGeometry.Builder;\n /** The category the element will belong to. This will passed into the [[GeometryParams]] */\n categoryId: Id64String\n /** The optional sub-category the element will belong to. This will passed into the [[GeometryParams]] */\n subCategoryId?: Id64String\n /** Whether or not to draw geometry for things like the snap points, range, and anchor point */\n wantDebugGeometry?: boolean;\n}\n\n/** Constructs the TextBlockGeometry and frame geometry and appends the geometry to the provided builder.\n * @returns true if the geometry was successfully appended.\n * @beta\n */\nexport function appendTextAnnotationGeometry(props: AppendTextAnnotationGeometryArgs): boolean {\n const annotation = TextAnnotation.fromJSON(props.annotationProps);\n\n const transform = annotation.computeTransform(props.layout.range, props.textStyleResolver.scaleFactor);\n\n let result = true;\n\n // Construct the TextBlockGeometry\n const params = new GeometryParams(props.categoryId, props.subCategoryId);\n const entries = produceTextBlockGeometry(props.layout, transform.clone());\n result = result && props.builder.appendTextBlock(entries, params);\n\n // Construct the frame geometry\n if (props.textStyleResolver.blockSettings.frame.shape !== \"none\") {\n result = result && appendFrameToBuilder(props.builder, props.textStyleResolver.blockSettings.frame, props.layout.range, transform.clone(), params);\n }\n\n // Construct the leader geometry\n if (annotation.leaders && annotation.leaders.length > 0) {\n result = result && appendLeadersToBuilder(props.builder, annotation.leaders, props.layout, transform.clone(), params, props.textStyleResolver);\n }\n\n // Construct the debug geometry\n if (props.wantDebugGeometry) {\n result = result && debugAnchorPoint(props.builder, annotation, props.layout, transform.clone());\n result = result && debugRunLayout(props.builder, props.layout, transform.clone());\n if (props.textStyleResolver.blockSettings.frame.shape !== \"none\") result = result && debugSnapPoints(props.builder, props.textStyleResolver.blockSettings, props.layout.range, transform.clone());\n }\n\n return result;\n};\n\n/**\n * Draws the anchor point and margins of the text annotation.\n * The anchor point is the point around which the text rotates and is drawn as a blue x (1m by 1m).\n * The margins are drawn as a blue box.\n * The text range is drawn as a red box.\n */\nfunction debugAnchorPoint(builder: ElementGeometry.Builder, annotation: TextAnnotation, layout: TextBlockLayout, transform: Transform): boolean {\n const range = Range2d.fromJSON(layout.range);\n const debugAnchorPt = transform.multiplyPoint3d(annotation.computeAnchorPoint(range));\n\n // Make it blue\n const blueLineParams = new GeometryParams(Id64.invalid);\n blueLineParams.lineColor = ColorDef.blue;\n let result = builder.appendGeometryParamsChange(blueLineParams);\n\n // Draw a blue box to show the element's margin\n const marginCorners = range.corners3d(true);\n transform.multiplyPoint3dArrayInPlace(marginCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(marginCorners));\n\n // Draw a blue x to show the anchor point - Rotation occurs around this point. The x will be 1 m by 1 m.\n result = result && builder.appendGeometryQuery(LineString3d.create(debugAnchorPt.plusXYZ(-1, -1), debugAnchorPt.plusXYZ(1, 1)));\n result = result && builder.appendGeometryQuery(LineString3d.create(debugAnchorPt.plusXYZ(1, -1), debugAnchorPt.plusXYZ(-1, 1)));\n\n // Draw a red box to show the text range\n const redLineParams = new GeometryParams(Id64.invalid);\n redLineParams.lineColor = ColorDef.red;\n result = result && builder.appendGeometryParamsChange(redLineParams);\n\n const rangeCorners = layout.textRange.corners3d(true);\n transform.multiplyPoint3dArrayInPlace(rangeCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(rangeCorners));\n\n return result;\n}\n\n/** Draws the interval points defined by calling [[computeIntervalPoints]]. The points are shown as black dots 5x larger than the borderWeight */\nfunction debugSnapPoints(builder: ElementGeometry.Builder, style: TextStyleSettings, range: Range2d, transform: Transform): boolean {\n if (style.frame.shape === \"none\")\n return false;\n const points = computeIntervalPoints({ frame: style.frame.shape, range, transform, lineIntervalFactor: 0.5, arcIntervalFactor: 0.25 });\n\n const params = new GeometryParams(Id64.invalid);\n params.lineColor = ColorDef.black;\n params.weight = style.frame.borderWeight * 5; // We want the dots to be bigger than the frame so we can see them.\n params.fillDisplay = FillDisplay.Always;\n\n const result = builder.appendGeometryParamsChange(params) && builder.appendGeometryQuery(PointString3d.create(points));\n return result;\n}\n\n/**\n * Draws debug geometry for each line and run in a TextBlockLayout.\n *\n * For each line and run, this function draws boxes to visualize their layout and boundaries.\n * Different run types (e.g., text, linebreak, fraction, tab) are assigned distinct colors for clarity.\n * This is useful for debugging text layout and alignment issues.\n *\n * @param builder - The geometry builder to append debug geometry to.\n * @param layout - The text block layout containing lines and runs to visualize.\n * @param documentTransform - The transform to apply to the entire document.\n * @returns True if all debug geometry was successfully appended.\n */\nfunction debugRunLayout(builder: ElementGeometry.Builder, layout: TextBlockLayout, documentTransform: Transform): boolean {\n let result = true; // Tracks if all geometry was appended successfully\n let color = ColorDef.black; // Current color for the run type\n let lastColor = color; // Last color used, to minimize param changes\n\n // Map run types to debug colors\n const colors = {\n \"text\": ColorDef.fromString(\"orange\"),\n \"linebreak\": ColorDef.fromString(\"yellow\"),\n \"fraction\": ColorDef.fromString(\"green\"),\n \"tab\": ColorDef.fromString(\"aquamarine\"),\n \"field\": ColorDef.fromString(\"purple\"),\n }\n\n layout.lines.forEach(line => {\n // Apply the line's offset transform\n const lineTrans = Transform.createTranslationXYZ(line.offsetFromDocument.x, line.offsetFromDocument.y, 0);\n documentTransform.multiplyTransformTransform(lineTrans, lineTrans);\n\n line.runs.forEach(run => {\n // Determine color for this run type\n color = colors[run.source.type] ?? ColorDef.black;\n\n // Only change geometry params if the color changes\n if (!lastColor.equals(color)) {\n const colorParams = new GeometryParams(Id64.invalid);\n colorParams.lineColor = color;\n result = result && builder.appendGeometryParamsChange(colorParams);\n lastColor = color;\n }\n\n // Apply the line's offset to the run's offset\n const runTrans = Transform.createTranslationXYZ(run.offsetFromLine.x, run.offsetFromLine.y, 0);\n lineTrans.multiplyTransformTransform(runTrans, runTrans);\n\n // Draw the enclosing range for the run\n const runCorners = run.range.corners3d(true);\n runTrans.multiplyPoint3dArrayInPlace(runCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(runCorners));\n });\n });\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"TextAnnotationGeometry.js","sourceRoot":"","sources":["../../../src/annotations/TextAnnotationGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ElementGeometry\n */\n\nimport { ColorDef, ElementGeometry, FillDisplay, GeometryParams, TextAnnotation, TextAnnotationProps, TextStyleSettings } from \"@itwin/core-common\";\nimport { RunLayout, TextBlockLayout, TextStyleResolver } from \"./TextBlockLayout\";\nimport { LineString3d, PointString3d, Range2d, Transform } from \"@itwin/core-geometry\";\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\nimport { produceTextBlockGeometry } from \"./TextBlockGeometry\";\nimport { appendFrameToBuilder, computeIntervalPoints } from \"./FrameGeometry\";\nimport { appendLeadersToBuilder } from \"./LeaderGeometry\";\n\n/**\n * Properties required to compute the geometry of a text annotation.\n * @beta\n * @see [[appendTextAnnotationGeometry]] to append the geometry to an [[ElementGeometry.Builder]].\n */\nexport interface AppendTextAnnotationGeometryArgs {\n /** The annotation to be drawn. Be sure to include a TextBlock with runs or no geometry will be produced. */\n annotationProps: TextAnnotationProps;\n /** Layout provided by calling [[layoutTextBlock]] */\n layout: TextBlockLayout;\n /** [[TextStyleResolver]] used to get styling and scale information for creating geometry. */\n textStyleResolver: TextStyleResolver;\n /** The scale factor to apply to the annotation. Usually comes from the `scaleFactor` of a [[Drawing]] element. */\n scaleFactor: number;\n /** Builder that will be added to in place */\n builder: ElementGeometry.Builder;\n /** The category the element will belong to. This will passed into the [[GeometryParams]] */\n categoryId: Id64String\n /** The optional sub-category the element will belong to. This will passed into the [[GeometryParams]] */\n subCategoryId?: Id64String\n /** Whether or not to draw geometry for things like the snap points, range, and anchor point */\n wantDebugGeometry?: boolean;\n}\n\n/** Constructs the TextBlockGeometry and frame geometry and appends the geometry to the provided builder.\n * @returns true if the geometry was successfully appended.\n * @beta\n */\nexport function appendTextAnnotationGeometry(props: AppendTextAnnotationGeometryArgs): boolean {\n const annotation = TextAnnotation.fromJSON(props.annotationProps);\n\n const transform = annotation.computeTransform(props.layout.range, props.scaleFactor);\n\n let result = true;\n\n // Construct the TextBlockGeometry\n const params = new GeometryParams(props.categoryId, props.subCategoryId);\n const entries = produceTextBlockGeometry(props.layout, transform.clone());\n result = result && props.builder.appendTextBlock(entries, params);\n\n // Construct the frame geometry\n if (props.textStyleResolver.blockSettings.frame.shape !== \"none\") {\n result = result && appendFrameToBuilder(props.builder, props.textStyleResolver.blockSettings.frame, props.layout.range, transform.clone(), params);\n }\n\n // Construct the leader geometry\n if (annotation.leaders && annotation.leaders.length > 0) {\n result = result && appendLeadersToBuilder(props.builder, annotation.leaders, props.layout, transform.clone(), params, props.textStyleResolver, props.scaleFactor);\n }\n\n // Construct the debug geometry\n if (props.wantDebugGeometry) {\n result = result && debugAnchorPoint(props.builder, annotation, props.layout, transform.clone());\n result = result && debugRunLayout(props.builder, props.layout, transform.clone());\n if (props.textStyleResolver.blockSettings.frame.shape !== \"none\") result = result && debugSnapPoints(props.builder, props.textStyleResolver.blockSettings, props.layout.range, transform.clone());\n }\n\n return result;\n};\n\n/**\n * Draws the anchor point and margins of the text annotation.\n * The anchor point is the point around which the text rotates and is drawn as a blue x (1m by 1m).\n * The margins are drawn as a blue box.\n * The text range is drawn as a red box.\n */\nfunction debugAnchorPoint(builder: ElementGeometry.Builder, annotation: TextAnnotation, layout: TextBlockLayout, transform: Transform): boolean {\n const range = Range2d.fromJSON(layout.range);\n const debugAnchorPt = transform.multiplyPoint3d(annotation.computeAnchorPoint(range));\n\n // Make it blue\n const blueLineParams = new GeometryParams(Id64.invalid);\n blueLineParams.lineColor = ColorDef.blue;\n let result = builder.appendGeometryParamsChange(blueLineParams);\n\n // Draw a blue box to show the element's margin\n const marginCorners = range.corners3d(true);\n transform.multiplyPoint3dArrayInPlace(marginCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(marginCorners));\n\n // Draw a blue x to show the anchor point - Rotation occurs around this point. The x will be 1 m by 1 m.\n result = result && builder.appendGeometryQuery(LineString3d.create(debugAnchorPt.plusXYZ(-1, -1), debugAnchorPt.plusXYZ(1, 1)));\n result = result && builder.appendGeometryQuery(LineString3d.create(debugAnchorPt.plusXYZ(1, -1), debugAnchorPt.plusXYZ(-1, 1)));\n\n // Draw a red box to show the text range\n const redLineParams = new GeometryParams(Id64.invalid);\n redLineParams.lineColor = ColorDef.red;\n result = result && builder.appendGeometryParamsChange(redLineParams);\n\n const rangeCorners = layout.textRange.corners3d(true);\n transform.multiplyPoint3dArrayInPlace(rangeCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(rangeCorners));\n\n return result;\n}\n\n/** Draws the interval points defined by calling [[computeIntervalPoints]]. The points are shown as black dots 5x larger than the borderWeight */\nfunction debugSnapPoints(builder: ElementGeometry.Builder, style: TextStyleSettings, range: Range2d, transform: Transform): boolean {\n if (style.frame.shape === \"none\")\n return false;\n const points = computeIntervalPoints({ frame: style.frame.shape, range, transform, lineIntervalFactor: 0.5, arcIntervalFactor: 0.25 });\n\n const params = new GeometryParams(Id64.invalid);\n params.lineColor = ColorDef.black;\n params.weight = style.frame.borderWeight * 5; // We want the dots to be bigger than the frame so we can see them.\n params.fillDisplay = FillDisplay.Always;\n\n const result = builder.appendGeometryParamsChange(params) && builder.appendGeometryQuery(PointString3d.create(points));\n return result;\n}\n\n/**\n * Draws debug geometry for each line and run in a TextBlockLayout.\n *\n * For each line and run, this function draws boxes to visualize their layout and boundaries.\n * Different run types (e.g., text, linebreak, fraction, tab) are assigned distinct colors for clarity.\n * This is useful for debugging text layout and alignment issues.\n *\n * @param builder - The geometry builder to append debug geometry to.\n * @param layout - The text block layout containing lines and runs to visualize.\n * @param documentTransform - The transform to apply to the entire document.\n * @returns True if all debug geometry was successfully appended.\n */\nfunction debugRunLayout(builder: ElementGeometry.Builder, layout: TextBlockLayout, documentTransform: Transform): boolean {\n let result = true; // Tracks if all geometry was appended successfully\n let lastColor = ColorDef.black; // Last color used, to minimize param changes\n\n // Map run types to debug colors\n const colors = {\n \"text\": ColorDef.fromString(\"orange\"),\n \"linebreak\": ColorDef.fromString(\"yellow\"),\n \"fraction\": ColorDef.fromString(\"green\"),\n \"tab\": ColorDef.fromString(\"aquamarine\"),\n \"field\": ColorDef.fromString(\"purple\"),\n \"marker\": ColorDef.fromString(\"pink\"),\n }\n\n const drawBox = (run: RunLayout, lineTransform: Transform, newColor: ColorDef) => {\n // Only change geometry params if the color changes\n if (lastColor !== newColor) {\n const colorParams = new GeometryParams(Id64.invalid);\n colorParams.lineColor = newColor;\n colorParams.weight = run.source.type === \"linebreak\" ? 3 : undefined;\n result = result && builder.appendGeometryParamsChange(colorParams);\n lastColor = newColor;\n }\n\n // Apply the line's offset to the run's offset\n const runTrans = Transform.createTranslationXYZ(run.offsetFromLine.x, run.offsetFromLine.y, 0);\n lineTransform.multiplyTransformTransform(runTrans, runTrans);\n\n // Draw the enclosing range for the run\n const runCorners = run.range.corners3d(true);\n runTrans.multiplyPoint3dArrayInPlace(runCorners);\n result = result && builder.appendGeometryQuery(LineString3d.create(runCorners));\n }\n\n layout.lines.forEach(line => {\n // Apply the line's offset transform\n const lineTrans = Transform.createTranslationXYZ(line.offsetFromDocument.x, line.offsetFromDocument.y, 0);\n documentTransform.multiplyTransformTransform(lineTrans, lineTrans);\n\n if (line.marker) {\n drawBox(line.marker, lineTrans, colors.marker);\n }\n\n line.runs.forEach(run => {\n // Determine color for this run type\n const color = colors[run.source.type] ?? ColorDef.black;\n drawBox(run, lineTrans, color);\n });\n });\n\n return result;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextBlockGeometry.d.ts","sourceRoot":"","sources":["../../../src/annotations/TextBlockGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAA2D,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAmC,SAAS,EAAY,MAAM,sBAAsB,CAAC;AAkI5F;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,GAAG,sBAAsB,CAwBtH"}
1
+ {"version":3,"file":"TextBlockGeometry.d.ts","sourceRoot":"","sources":["../../../src/annotations/TextBlockGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAA2D,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAmC,SAAS,EAAY,MAAM,sBAAsB,CAAC;AAkI5F;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,GAAG,sBAAsB,CAmCtH"}
@@ -115,6 +115,14 @@ export function produceTextBlockGeometry(layout, documentTransform) {
115
115
  const context = { entries: [] };
116
116
  for (const line of layout.lines) {
117
117
  const lineTrans = Transform.createTranslationXYZ(line.offsetFromDocument.x, line.offsetFromDocument.y, 0);
118
+ // Create geometry for list markers if present
119
+ if (line.marker) {
120
+ const markerTrans = Transform.createTranslationXYZ(line.marker.offsetFromLine.x, line.marker.offsetFromLine.y, 0);
121
+ lineTrans.multiplyTransformTransform(markerTrans, markerTrans);
122
+ documentTransform.multiplyTransformTransform(markerTrans, markerTrans);
123
+ processTextRun(line.marker, markerTrans, context);
124
+ }
125
+ // Create geometry for runs
118
126
  for (const run of line.runs) {
119
127
  // Skip runs that are solely whitespace
120
128
  if (run.source.isWhitespace) {
@@ -1 +1 @@
1
- {"version":3,"file":"TextBlockGeometry.js","sourceRoot":"","sources":["../../../src/annotations/TextBlockGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ElementGeometry\n */\n\nimport { TextBlockGeometryProps, TextBlockGeometryPropsEntry, TextString, TextStyleColor } from \"@itwin/core-common\";\nimport { RunLayout, TextBlockLayout } from \"./TextBlockLayout\";\nimport { LineSegment3d, Point3d, Range2d, Transform, Vector2d } from \"@itwin/core-geometry\";\nimport { assert } from \"@itwin/core-bentley\";\n\ninterface GeometryContext {\n curColor?: TextStyleColor;\n entries: TextBlockGeometryPropsEntry[];\n}\n\nfunction setColor(color: TextStyleColor, context: GeometryContext): void {\n if (color !== context.curColor) {\n context.curColor = color;\n context.entries.push({ color });\n }\n}\n\nfunction createTextString(text: string, run: RunLayout, origin?: Point3d): TextString {\n assert(text.length > 0);\n\n const { lineHeight, widthFactor, isBold, isItalic, isUnderlined } = run.style;\n\n return new TextString({\n text,\n font: run.fontId,\n height: lineHeight,\n widthFactor,\n bold: isBold,\n italic: isItalic,\n underline: isUnderlined,\n origin,\n });\n}\n\nfunction processTextRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n assert(run.source.type === \"text\");\n const text = run.source.content.substring(run.charOffset, run.charOffset + run.numChars);\n if (text.length === 0) {\n return;\n }\n\n const ts = createTextString(text, run);\n if (\"none\" !== run.source.baselineShift) {\n const isSub = \"subscript\" === run.source.baselineShift;\n const offsetFactor = run.style[isSub ? \"subScriptOffsetFactor\" : \"superScriptOffsetFactor\"];\n const scale = run.style[isSub ? \"subScriptScale\" : \"superScriptScale\"];\n\n ts.origin.y += offsetFactor * ts.height;\n ts.height *= scale;\n }\n\n ts.transformInPlace(transform);\n\n setColor(run.style.color, context);\n context.entries.push({ text: ts });\n}\n\nfunction processFieldRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n assert(run.source.type === \"field\");\n const text = run.source.cachedContent.substring(run.charOffset, run.charOffset + run.numChars);\n if (text.length === 0) {\n return;\n }\n\n const ts = createTextString(text, run);\n ts.transformInPlace(transform);\n\n setColor(run.style.color, context);\n context.entries.push({ text: ts });\n}\n\nfunction createFractionTextString(text: string, run: RunLayout, origin: Point3d, transform: Transform): TextString {\n const ts = createTextString(text, run, origin);\n assert(undefined !== ts.widthFactor);\n\n ts.height *= run.style.stackedFractionScale;\n\n ts.transformInPlace(transform);\n\n return ts;\n}\n\nfunction processFractionRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n const source = run.source;\n assert(source.type === \"fraction\");\n\n if (source.numerator.length === 0 && source.denominator.length === 0) {\n return;\n }\n\n assert(undefined !== run.numeratorRange && undefined !== run.denominatorRange);\n\n const fontSize = new Vector2d(run.style.lineHeight * run.style.widthFactor, run.style.lineHeight);\n fontSize.scale(run.style.stackedFractionScale, fontSize);\n\n const numeratorOffset = new Point3d(run.numeratorRange.low.x, run.numeratorRange.low.y, 0);\n const denominatorOffset = new Point3d(run.denominatorRange.low.x, run.denominatorRange.low.y, 0);\n\n setColor(run.style.color, context);\n\n if (source.numerator.length > 0) {\n context.entries.push({ text: createFractionTextString(source.numerator, run, numeratorOffset, transform) });\n }\n\n const numeratorRange = Range2d.fromJSON(run.numeratorRange);\n const denominatorRange = Range2d.fromJSON(run.denominatorRange);\n\n let separator: LineSegment3d;\n if (run.style.stackedFractionType === \"horizontal\") {\n const fractionWidth = Math.max(numeratorRange.xLength(), denominatorRange.xLength());\n const y = 1.25 * denominatorRange.yLength();\n separator = LineSegment3d.createXYXY(0, y, fractionWidth, y);\n } else {\n const p0 = new Point3d(denominatorRange.low.x - fontSize.x / 2, denominatorRange.low.y + fontSize.y * (1 / 3), 0);\n const p1 = new Point3d(p0.x + fontSize.x, p0.y + fontSize.y * 1.5, 0);\n separator = LineSegment3d.createCapture(p0, p1);\n }\n\n separator.tryTransformInPlace(transform);\n\n context.entries.push({\n separator: {\n startPoint: separator.point0Ref.toJSON(),\n endPoint: separator.point1Ref.toJSON(),\n },\n });\n\n if (source.denominator.length > 0) {\n context.entries.push({ text: createFractionTextString(source.denominator, run, denominatorOffset, transform) });\n }\n}\n\n/**\n * Produces the geometry for a text block in a way that can be interpreted by a [[GeometryStreamBuilder]] or [[ElementBuilder.Geometry]].\n * To build the geometry for a whole [[TextAnnotation]], use [[appendTextAnnotationGeometry]] instead.\n * @param layout of the text block as computed by [[layoutTextBlock]].\n * @param documentTransform that positions the text block in world coordinates.\n * @returns TextBlockGeometryProps.\n * @beta\n */\nexport function produceTextBlockGeometry(layout: TextBlockLayout, documentTransform: Transform): TextBlockGeometryProps {\n const context: GeometryContext = { entries: [] };\n for (const line of layout.lines) {\n const lineTrans = Transform.createTranslationXYZ(line.offsetFromDocument.x, line.offsetFromDocument.y, 0);\n for (const run of line.runs) {\n // Skip runs that are solely whitespace\n if (run.source.isWhitespace) {\n continue;\n }\n\n const runTrans = Transform.createTranslationXYZ(run.offsetFromLine.x, run.offsetFromLine.y, 0);\n lineTrans.multiplyTransformTransform(runTrans, runTrans);\n documentTransform.multiplyTransformTransform(runTrans, runTrans);\n if (\"text\" === run.source.type) {\n processTextRun(run, runTrans, context);\n } else if (\"fraction\" === run.source.type) {\n processFractionRun(run, runTrans, context);\n } else {\n processFieldRun(run, runTrans, context);\n }\n }\n }\n\n return { entries: context.entries };\n}\n"]}
1
+ {"version":3,"file":"TextBlockGeometry.js","sourceRoot":"","sources":["../../../src/annotations/TextBlockGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ElementGeometry\n */\n\nimport { TextBlockGeometryProps, TextBlockGeometryPropsEntry, TextString, TextStyleColor } from \"@itwin/core-common\";\nimport { RunLayout, TextBlockLayout } from \"./TextBlockLayout\";\nimport { LineSegment3d, Point3d, Range2d, Transform, Vector2d } from \"@itwin/core-geometry\";\nimport { assert } from \"@itwin/core-bentley\";\n\ninterface GeometryContext {\n curColor?: TextStyleColor;\n entries: TextBlockGeometryPropsEntry[];\n}\n\nfunction setColor(color: TextStyleColor, context: GeometryContext): void {\n if (color !== context.curColor) {\n context.curColor = color;\n context.entries.push({ color });\n }\n}\n\nfunction createTextString(text: string, run: RunLayout, origin?: Point3d): TextString {\n assert(text.length > 0);\n\n const { lineHeight, widthFactor, isBold, isItalic, isUnderlined } = run.style;\n\n return new TextString({\n text,\n font: run.fontId,\n height: lineHeight,\n widthFactor,\n bold: isBold,\n italic: isItalic,\n underline: isUnderlined,\n origin,\n });\n}\n\nfunction processTextRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n assert(run.source.type === \"text\");\n const text = run.source.content.substring(run.charOffset, run.charOffset + run.numChars);\n if (text.length === 0) {\n return;\n }\n\n const ts = createTextString(text, run);\n if (\"none\" !== run.source.baselineShift) {\n const isSub = \"subscript\" === run.source.baselineShift;\n const offsetFactor = run.style[isSub ? \"subScriptOffsetFactor\" : \"superScriptOffsetFactor\"];\n const scale = run.style[isSub ? \"subScriptScale\" : \"superScriptScale\"];\n\n ts.origin.y += offsetFactor * ts.height;\n ts.height *= scale;\n }\n\n ts.transformInPlace(transform);\n\n setColor(run.style.color, context);\n context.entries.push({ text: ts });\n}\n\nfunction processFieldRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n assert(run.source.type === \"field\");\n const text = run.source.cachedContent.substring(run.charOffset, run.charOffset + run.numChars);\n if (text.length === 0) {\n return;\n }\n\n const ts = createTextString(text, run);\n ts.transformInPlace(transform);\n\n setColor(run.style.color, context);\n context.entries.push({ text: ts });\n}\n\nfunction createFractionTextString(text: string, run: RunLayout, origin: Point3d, transform: Transform): TextString {\n const ts = createTextString(text, run, origin);\n assert(undefined !== ts.widthFactor);\n\n ts.height *= run.style.stackedFractionScale;\n\n ts.transformInPlace(transform);\n\n return ts;\n}\n\nfunction processFractionRun(run: RunLayout, transform: Transform, context: GeometryContext): void {\n const source = run.source;\n assert(source.type === \"fraction\");\n\n if (source.numerator.length === 0 && source.denominator.length === 0) {\n return;\n }\n\n assert(undefined !== run.numeratorRange && undefined !== run.denominatorRange);\n\n const fontSize = new Vector2d(run.style.lineHeight * run.style.widthFactor, run.style.lineHeight);\n fontSize.scale(run.style.stackedFractionScale, fontSize);\n\n const numeratorOffset = new Point3d(run.numeratorRange.low.x, run.numeratorRange.low.y, 0);\n const denominatorOffset = new Point3d(run.denominatorRange.low.x, run.denominatorRange.low.y, 0);\n\n setColor(run.style.color, context);\n\n if (source.numerator.length > 0) {\n context.entries.push({ text: createFractionTextString(source.numerator, run, numeratorOffset, transform) });\n }\n\n const numeratorRange = Range2d.fromJSON(run.numeratorRange);\n const denominatorRange = Range2d.fromJSON(run.denominatorRange);\n\n let separator: LineSegment3d;\n if (run.style.stackedFractionType === \"horizontal\") {\n const fractionWidth = Math.max(numeratorRange.xLength(), denominatorRange.xLength());\n const y = 1.25 * denominatorRange.yLength();\n separator = LineSegment3d.createXYXY(0, y, fractionWidth, y);\n } else {\n const p0 = new Point3d(denominatorRange.low.x - fontSize.x / 2, denominatorRange.low.y + fontSize.y * (1 / 3), 0);\n const p1 = new Point3d(p0.x + fontSize.x, p0.y + fontSize.y * 1.5, 0);\n separator = LineSegment3d.createCapture(p0, p1);\n }\n\n separator.tryTransformInPlace(transform);\n\n context.entries.push({\n separator: {\n startPoint: separator.point0Ref.toJSON(),\n endPoint: separator.point1Ref.toJSON(),\n },\n });\n\n if (source.denominator.length > 0) {\n context.entries.push({ text: createFractionTextString(source.denominator, run, denominatorOffset, transform) });\n }\n}\n\n/**\n * Produces the geometry for a text block in a way that can be interpreted by a [[GeometryStreamBuilder]] or [[ElementBuilder.Geometry]].\n * To build the geometry for a whole [[TextAnnotation]], use [[appendTextAnnotationGeometry]] instead.\n * @param layout of the text block as computed by [[layoutTextBlock]].\n * @param documentTransform that positions the text block in world coordinates.\n * @returns TextBlockGeometryProps.\n * @beta\n */\nexport function produceTextBlockGeometry(layout: TextBlockLayout, documentTransform: Transform): TextBlockGeometryProps {\n const context: GeometryContext = { entries: [] };\n for (const line of layout.lines) {\n const lineTrans = Transform.createTranslationXYZ(line.offsetFromDocument.x, line.offsetFromDocument.y, 0);\n\n // Create geometry for list markers if present\n if (line.marker) {\n const markerTrans = Transform.createTranslationXYZ(line.marker.offsetFromLine.x, line.marker.offsetFromLine.y, 0);\n lineTrans.multiplyTransformTransform(markerTrans, markerTrans);\n documentTransform.multiplyTransformTransform(markerTrans, markerTrans);\n\n processTextRun(line.marker, markerTrans, context);\n }\n\n // Create geometry for runs\n for (const run of line.runs) {\n // Skip runs that are solely whitespace\n if (run.source.isWhitespace) {\n continue;\n }\n\n const runTrans = Transform.createTranslationXYZ(run.offsetFromLine.x, run.offsetFromLine.y, 0);\n lineTrans.multiplyTransformTransform(runTrans, runTrans);\n documentTransform.multiplyTransformTransform(runTrans, runTrans);\n if (\"text\" === run.source.type) {\n processTextRun(run, runTrans, context);\n } else if (\"fraction\" === run.source.type) {\n processFractionRun(run, runTrans, context);\n } else {\n processFieldRun(run, runTrans, context);\n }\n }\n }\n\n return { entries: context.entries };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module ElementGeometry
3
3
  */
4
- import { BaselineShift, FieldRun, FontId, FontType, FractionRun, LineLayoutResult, Paragraph, Run, RunLayoutResult, TabRun, TextAnnotationLeader, TextBlock, TextBlockLayoutResult, TextRun, TextStyleSettings } from "@itwin/core-common";
5
- import { Range2d } from "@itwin/core-geometry";
4
+ import { BaselineShift, FieldRun, FontId, FontType, FractionRun, LineLayoutResult, List, Paragraph, Run, RunLayoutResult, TabRun, TextBlock, TextBlockComponent, TextBlockLayoutResult, TextRun, TextStyleSettings, TextStyleSettingsProps } from "@itwin/core-common";
5
+ import { Range2d, WritableXAndY } from "@itwin/core-geometry";
6
6
  import { IModelDb } from "../IModelDb";
7
7
  import { Id64String } from "@itwin/core-bentley";
8
8
  /** @internal */
@@ -34,12 +34,10 @@ export type FindFontId = (name: string, type?: FontType) => FontId;
34
34
  /** @internal chiefly for tests. */
35
35
  export type FindTextStyle = (id: Id64String) => TextStyleSettings;
36
36
  /**
37
- * Arguments supplied to [[computeLayoutTextBlockResult]].
37
+ * Base interface for arguments supplied to [[computeLayoutTextBlockResult]] and [[computeGraphemeOffsets]].
38
38
  * @beta
39
39
  */
40
- export interface LayoutTextBlockArgs {
41
- /** The text block whose extents are to be computed. */
42
- textBlock: TextBlock;
40
+ export interface LayoutTextArgs {
43
41
  /** The iModel from which to obtain fonts and [[AnnotationTextStyle]]s when laying out glyphs. */
44
42
  iModel: IModelDb;
45
43
  /** The text style resolver used to resolve effective text styles during layout. */
@@ -49,6 +47,14 @@ export interface LayoutTextBlockArgs {
49
47
  /** @internal chiefly for tests, by default uses IModelDb.fontMap. */
50
48
  findFontId?: FindFontId;
51
49
  }
50
+ /**
51
+ * Arguments supplied to [[computeLayoutTextBlockResult]].
52
+ * @beta
53
+ */
54
+ export interface LayoutTextBlockArgs extends LayoutTextArgs {
55
+ /** The text block whose extents are to be computed. */
56
+ textBlock: TextBlock;
57
+ }
52
58
  /**
53
59
  * Lays out the contents of a TextBlock into a series of lines containing runs.
54
60
  * Each paragraph is decomposed into a series of lines.
@@ -70,9 +76,9 @@ export declare function computeLayoutTextBlockResult(args: LayoutTextBlockArgs):
70
76
  * Arguments supplied to [[computeGraphemeOffsets]].
71
77
  * @beta
72
78
  */
73
- export interface ComputeGraphemeOffsetsArgs extends LayoutTextBlockArgs {
74
- /** The index of the [Paragraph]($common) in the text block that contains the run layout result text. */
75
- paragraphIndex: number;
79
+ export interface ComputeGraphemeOffsetsArgs extends LayoutTextArgs {
80
+ /** The TextBlockComponent for which to compute grapheme offsets. */
81
+ source: TextBlockComponent;
76
82
  /** The run layout result for which grapheme ranges will be computed. */
77
83
  runLayoutResult: RunLayoutResult;
78
84
  /** An array of starting character indexes for each grapheme. Each entry represents the index of the first character in a grapheme. */
@@ -93,34 +99,30 @@ export declare function computeGraphemeOffsets(args: ComputeGraphemeOffsetsArgs)
93
99
  export interface TextStyleResolverArgs {
94
100
  /** The text block whose styles are being resolved. */
95
101
  textBlock: TextBlock;
102
+ /** The ID of the [[AnnotationTextStyle]] to apply. */
103
+ textStyleId: Id64String;
96
104
  /** The iModel from which to obtain [[AnnotationTextStyle]]s when resolving styles. */
97
105
  iModel: IModelDb;
98
- /** The ID of the model containing the text block, used to compute the scale factor. */
99
- modelId?: Id64String;
100
106
  /** @internal chiefly for tests, by default looks up an [[AnnotationTextStyle]] in the iModel by ID. */
101
107
  findTextStyle?: FindTextStyle;
102
108
  }
103
109
  /**
104
- * Resolves the effective style of TextBlockComponents and Leaders, taking into account overrides/style of the instance and its parent(s).
110
+ * Resolves the effective style of TextBlockComponents and Leaders, taking into account overrides of the instance and its parent(s).
105
111
  * @beta
106
112
  */
107
113
  export declare class TextStyleResolver {
108
- private readonly _textStyles;
109
- private readonly _findTextStyle;
110
114
  /** The resolved style of the TextBlock. */
111
115
  readonly blockSettings: TextStyleSettings;
112
- /** The scale factor of the model containing the TextBlock. */
113
- readonly scaleFactor: number;
114
116
  constructor(args: TextStyleResolverArgs);
115
- private resolveParagraphSettingsImpl;
116
- /** Looks up an [[AnnotationTextStyle]] by ID. Uses caching. */
117
- findTextStyle(id: Id64String): TextStyleSettings;
118
- /** Resolves the effective style for a [TextAnnotationLeader]($common). The TextAnnotationLeader should be a sibling of the provided TextBlock. */
119
- resolveTextAnnotationLeaderSettings(leader: TextAnnotationLeader): TextStyleSettings;
120
- /** Resolves the effective style for a [Paragraph]($common). Paragraph should be child of provided TextBlock. */
121
- resolveParagraphSettings(paragraph: Paragraph): TextStyleSettings;
122
- /** Resolves the effective style for a [Run]($common). Run should be child of provided Paragraph and TextBlock. */
123
- resolveRunSettings(paragraph: Paragraph, run: Run): TextStyleSettings;
117
+ /**
118
+ * Resolves the effective text style settings for a given TextBlockComponent, applying block-level overrides.
119
+ */
120
+ resolveSettings(overrides: TextStyleSettingsProps, isLeader?: boolean): TextStyleSettings;
121
+ resolveMarkerText(overrides: TextStyleSettingsProps, index: number): string;
122
+ /**
123
+ * Computes the indentation based on its style and nesting depth.
124
+ */
125
+ resolveIndentation(styleOverrides: TextStyleSettingsProps, depth: number): number;
124
126
  }
125
127
  declare class LayoutContext {
126
128
  readonly textStyleResolver: TextStyleResolver;
@@ -136,7 +138,7 @@ declare class LayoutContext {
136
138
  numerator: Range2d;
137
139
  denominator: Range2d;
138
140
  };
139
- computeRangeForTabRun(style: TextStyleSettings, source: TabRun, length: number): Range2d;
141
+ computeRangeForTabRun(style: TextStyleSettings, source: TabRun, lengthFromLastTab: number): Range2d;
140
142
  }
141
143
  /**
142
144
  * Represents the layout of a single run (text, fraction, or line break) within a line of text.
@@ -159,7 +161,7 @@ export declare class RunLayout {
159
161
  style: TextStyleSettings;
160
162
  fontId: FontId;
161
163
  private constructor();
162
- static create(source: Run, parentParagraph: Paragraph, context: LayoutContext): RunLayout;
164
+ static create(source: Run, context: LayoutContext, cumulativeOverrides: TextStyleSettingsProps): RunLayout;
163
165
  /** Compute a string representation, primarily for debugging purposes. */
164
166
  stringify(): string;
165
167
  canWrap(): this is {
@@ -167,7 +169,7 @@ export declare class RunLayout {
167
169
  };
168
170
  private cloneForWrap;
169
171
  split(context: LayoutContext): RunLayout[];
170
- toResult(paragraph: Paragraph): RunLayoutResult;
172
+ toResult(): RunLayoutResult;
171
173
  }
172
174
  /**
173
175
  * Represents the layout of a single line within a paragraph of a text block.
@@ -176,25 +178,34 @@ export declare class RunLayout {
176
178
  * @beta
177
179
  */
178
180
  export declare class LineLayout {
179
- source: Paragraph;
181
+ source: List | Run | Paragraph;
180
182
  range: Range2d;
183
+ runRange: Range2d;
181
184
  justificationRange: Range2d;
182
- offsetFromDocument: {
183
- x: number;
184
- y: number;
185
- };
185
+ offsetFromDocument: WritableXAndY;
186
+ depth: number;
186
187
  lengthFromLastTab: number;
187
188
  private _runs;
188
- constructor(source: Paragraph);
189
+ private _marker?;
190
+ constructor(source: List | Run | Paragraph, style: TextStyleSettingsProps, context?: LayoutContext, depth?: number);
189
191
  /** Compute a string representation, primarily for debugging purposes. */
190
192
  stringify(): string;
193
+ /** Gets the array of RunLayout objects contained in this line. */
191
194
  get runs(): ReadonlyArray<RunLayout>;
195
+ /** Indicates whether this line contains any runs. */
192
196
  get isEmpty(): boolean;
197
+ /** Gets the last RunLayout in this line. */
193
198
  get back(): RunLayout;
199
+ /**
200
+ * Gets or sets the marker RunLayout for this line, used for lists.
201
+ * A marker is the symbol or character that appears before each list item in a list, bullets, numbers, etc.
202
+ * */
203
+ get marker(): RunLayout | undefined;
204
+ set marker(value: RunLayout | undefined);
194
205
  append(run: RunLayout): void;
195
206
  /** Invoked every time a run is appended,. */
196
207
  private computeRanges;
197
- toResult(textBlock: TextBlock): LineLayoutResult;
208
+ toResult(): LineLayoutResult;
198
209
  }
199
210
  /**
200
211
  * Describes the layout of a text block as a collection of lines containing runs.
@@ -216,8 +227,10 @@ export declare class TextBlockLayout {
216
227
  stringify(): string;
217
228
  private get _back();
218
229
  private populateLines;
219
- private justifyLines;
230
+ private populateComponent;
231
+ private populateRun;
220
232
  private flushLine;
233
+ private justifyLines;
221
234
  private applyMargins;
222
235
  }
223
236
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TextBlockLayout.d.ts","sourceRoot":"","sources":["../../../src/annotations/TextBlockLayout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextBlockLayout.d.ts","sourceRoot":"","sources":["../../../src/annotations/TextBlockLayout.ts"],"names":[],"mappings":"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"}