scriptup 2026.0.0 → 2026.0.1

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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/ext/entity.c +3 -0
  3. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Frameworks/libCommonGeometry.dylib +0 -0
  4. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/{Libraries → Frameworks}/libCommonGeoutils.dylib +0 -0
  5. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/{Libraries → Frameworks}/libCommonImage.dylib +0 -0
  6. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Frameworks/libCommonPreferences.dylib +0 -0
  7. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Frameworks/libCommonUnits.dylib +0 -0
  8. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Frameworks/libCommonUtils.dylib +0 -0
  9. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Frameworks/libCommonZip.dylib +0 -0
  10. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/model.h +4 -4
  11. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/overlay.h +20 -6
  12. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/common.h +9 -9
  13. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/extension_license.h +9 -1
  14. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point2d.h +2 -2
  15. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point3d.h +2 -2
  16. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/transformation2d.h +3 -3
  17. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector2d.h +5 -5
  18. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector3d.h +4 -4
  19. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry.h +9 -7
  20. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/modelimporterplugin.h +8 -4
  21. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/attribute_dictionary.h +4 -4
  22. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_definition.h +74 -33
  23. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_definition_snap_to_behavior_private.h +46 -0
  24. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_instance.h +11 -11
  25. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/curve.h +4 -4
  26. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/defs.h +7 -2
  27. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension.h +2 -0
  28. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/drawing_element.h +11 -11
  29. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/edge.h +7 -7
  30. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entities.h +106 -61
  31. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity.h +7 -4
  32. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/environment.h +382 -0
  33. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/environments.h +133 -0
  34. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/face.h +43 -27
  35. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/geometry_input.h +126 -116
  36. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/group.h +9 -8
  37. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/image.h +6 -5
  38. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/layer.h +3 -3
  39. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/material.h +432 -25
  40. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model.h +263 -100
  41. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model_entity_type_private.h +44 -0
  42. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/rendering_options.h +82 -81
  43. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/scene.h +222 -42
  44. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/snap.h +183 -0
  45. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/space.h +26 -0
  46. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/styles.h +29 -27
  47. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/text.h +14 -6
  48. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/texture.h +23 -1
  49. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/typed_value.h +26 -26
  50. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/vertex.h +2 -2
  51. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/sketchup.h +4 -1
  52. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/unicodestring.h +7 -7
  53. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Resources/Info.plist +8 -8
  54. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/SketchUpAPI +0 -0
  55. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/_CodeSignature/CodeResources +144 -88
  56. data/sketchup-sdk-win/binaries/layout/x64/LayOutAPI.dll +0 -0
  57. data/sketchup-sdk-win/binaries/layout/x64/LayOutAPI.lib +0 -0
  58. data/sketchup-sdk-win/binaries/layout/x64/LayOutControllers.dll +0 -0
  59. data/sketchup-sdk-win/binaries/layout/x64/LayOutModel.dll +0 -0
  60. data/sketchup-sdk-win/binaries/layout/x64/LayOutRTF.dll +0 -0
  61. data/sketchup-sdk-win/binaries/layout/x64/LayOutUtils.dll +0 -0
  62. data/sketchup-sdk-win/binaries/layout/x64/LayOutView.dll +0 -0
  63. data/sketchup-sdk-win/binaries/layout/x64/SketchUpCommonPreferences.dll +0 -0
  64. data/sketchup-sdk-win/binaries/layout/x64/SketchUpViewerAPI.dll +0 -0
  65. data/sketchup-sdk-win/binaries/layout/x64/SketchUpViewerAPI.lib +0 -0
  66. data/sketchup-sdk-win/binaries/layout/x64/pdflib.dll +0 -0
  67. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.dll +0 -0
  68. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.lib +0 -0
  69. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpCommonPreferences.dll +0 -0
  70. data/sketchup-sdk-win/binaries/sketchup/x64/sketchup.lib +0 -0
  71. data/sketchup-sdk-win/headers/LayOutAPI/application/application.h +14 -14
  72. data/sketchup-sdk-win/headers/LayOutAPI/layout.h +1 -1
  73. data/sketchup-sdk-win/headers/LayOutAPI/model/dictionary.h +1 -1
  74. data/sketchup-sdk-win/headers/LayOutAPI/model/document.h +73 -0
  75. data/sketchup-sdk-win/headers/LayOutAPI/model/documentexportoptions.h +21 -2
  76. data/sketchup-sdk-win/headers/LayOutAPI/model/entity.h +72 -0
  77. data/sketchup-sdk-win/headers/LayOutAPI/model/group.h +2 -1
  78. data/sketchup-sdk-win/headers/LayOutAPI/model/lineardimension.h +54 -2
  79. data/sketchup-sdk-win/headers/LayOutAPI/model/page.h +70 -0
  80. data/sketchup-sdk-win/headers/LayOutAPI/model/sketchupmodel.h +58 -1
  81. data/sketchup-sdk-win/headers/LayOutAPI/model/style.h +39 -3
  82. data/sketchup-sdk-win/headers/LayOutAPI/model/table.h +2 -0
  83. data/sketchup-sdk-win/headers/LayOutAPI/model/typed_value.h +25 -1
  84. data/sketchup-sdk-win/headers/SketchUpAPI/application/model.h +4 -4
  85. data/sketchup-sdk-win/headers/SketchUpAPI/application/overlay.h +20 -6
  86. data/sketchup-sdk-win/headers/SketchUpAPI/common.h +9 -9
  87. data/sketchup-sdk-win/headers/SketchUpAPI/extension_license.h +9 -1
  88. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point2d.h +2 -2
  89. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point3d.h +2 -2
  90. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/transformation2d.h +3 -3
  91. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector2d.h +5 -5
  92. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector3d.h +4 -4
  93. data/sketchup-sdk-win/headers/SketchUpAPI/geometry.h +9 -7
  94. data/sketchup-sdk-win/headers/SketchUpAPI/import_export/modelimporterplugin.h +8 -4
  95. data/sketchup-sdk-win/headers/SketchUpAPI/model/attribute_dictionary.h +4 -4
  96. data/sketchup-sdk-win/headers/SketchUpAPI/model/component_definition.h +74 -33
  97. data/sketchup-sdk-win/headers/SketchUpAPI/model/component_definition_snap_to_behavior_private.h +46 -0
  98. data/sketchup-sdk-win/headers/SketchUpAPI/model/component_instance.h +11 -11
  99. data/sketchup-sdk-win/headers/SketchUpAPI/model/curve.h +4 -4
  100. data/sketchup-sdk-win/headers/SketchUpAPI/model/defs.h +7 -2
  101. data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension.h +2 -0
  102. data/sketchup-sdk-win/headers/SketchUpAPI/model/drawing_element.h +11 -11
  103. data/sketchup-sdk-win/headers/SketchUpAPI/model/edge.h +7 -7
  104. data/sketchup-sdk-win/headers/SketchUpAPI/model/entities.h +106 -61
  105. data/sketchup-sdk-win/headers/SketchUpAPI/model/entity.h +7 -4
  106. data/sketchup-sdk-win/headers/SketchUpAPI/model/environment.h +382 -0
  107. data/sketchup-sdk-win/headers/SketchUpAPI/model/environments.h +133 -0
  108. data/sketchup-sdk-win/headers/SketchUpAPI/model/face.h +43 -27
  109. data/sketchup-sdk-win/headers/SketchUpAPI/model/geometry_input.h +126 -116
  110. data/sketchup-sdk-win/headers/SketchUpAPI/model/group.h +9 -8
  111. data/sketchup-sdk-win/headers/SketchUpAPI/model/image.h +6 -5
  112. data/sketchup-sdk-win/headers/SketchUpAPI/model/layer.h +3 -3
  113. data/sketchup-sdk-win/headers/SketchUpAPI/model/material.h +432 -25
  114. data/sketchup-sdk-win/headers/SketchUpAPI/model/model.h +263 -100
  115. data/sketchup-sdk-win/headers/SketchUpAPI/model/model_entity_type_private.h +44 -0
  116. data/sketchup-sdk-win/headers/SketchUpAPI/model/rendering_options.h +82 -81
  117. data/sketchup-sdk-win/headers/SketchUpAPI/model/scene.h +222 -42
  118. data/sketchup-sdk-win/headers/SketchUpAPI/model/snap.h +183 -0
  119. data/sketchup-sdk-win/headers/SketchUpAPI/model/space.h +26 -0
  120. data/sketchup-sdk-win/headers/SketchUpAPI/model/styles.h +29 -27
  121. data/sketchup-sdk-win/headers/SketchUpAPI/model/text.h +14 -6
  122. data/sketchup-sdk-win/headers/SketchUpAPI/model/texture.h +23 -1
  123. data/sketchup-sdk-win/headers/SketchUpAPI/model/typed_value.h +26 -26
  124. data/sketchup-sdk-win/headers/SketchUpAPI/model/vertex.h +2 -2
  125. data/sketchup-sdk-win/headers/SketchUpAPI/sketchup.h +4 -1
  126. data/sketchup-sdk-win/headers/SketchUpAPI/unicodestring.h +7 -7
  127. metadata +22 -10
  128. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonGeometry.dylib +0 -0
  129. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonPreferences.dylib +0 -0
  130. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUnits.dylib +0 -0
  131. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUtils.dylib +0 -0
  132. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonZip.dylib +0 -0
  133. data/sketchup-sdk-win/headers/LayOutAPI/model/skpfilereference.h +0 -94
@@ -857,6 +857,79 @@ render mode, set this to LOSketchUpModelRenderMode_NoOverride.
857
857
  */
858
858
  LO_RESULT LODocumentSetRenderModeOverride(
859
859
  LODocumentRef document, LOSketchUpModelRenderMode render_mode);
860
+
861
+ /**
862
+ @brief Gets a copy of an attribute dictionary with the given name from a document.
863
+ @since LayOut 2026, API 11.0
864
+ @param[in] document The document object.
865
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve.
866
+ @param[out] dictionary The attribute dictionary object.
867
+ @related LODocumentRef
868
+ @return
869
+ - \ref SU_ERROR_NONE on success
870
+ - \ref SU_ERROR_INVALID_INPUT if \p document does not refer to a valid object
871
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name is NULL
872
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p dictionary is NULL
873
+ - \ref SU_ERROR_NO_DATA if \p document does not have an attribute dictionary with the given name
874
+ */
875
+ LO_RESULT LODocumentCreateAttributeDictionaryCopy(
876
+ LODocumentRef document, const char* dictionary_name, LODictionaryRef* dictionary);
877
+
878
+ /**
879
+ @brief Sets an attribute to a given dictionary belonging to a document.
880
+
881
+ @since LayOut 2026, API 11.0
882
+ @param[in] document The document object.
883
+ @param[in] dictionary_name The name of the attribute dictionary object being added to.
884
+ @param[in] key The key to use when adding to the attribute dictionary.
885
+ @param[in] value_in The value to be added to the attribute dictionary.
886
+ @related LODocumentRef
887
+ @return
888
+ - \ref SU_ERROR_NONE on success
889
+ - \ref SU_ERROR_INVALID_INPUT if \p document does not refer to a valid object
890
+ - \ref SU_ERROR_INVALID_ARGUMENT if \p value_in contains no data
891
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
892
+ - \ref SU_ERROR_UNSUPPORTED if \p dictionary_name is empty
893
+ */
894
+ LO_RESULT LODocumentSetAttribute(
895
+ LODocumentRef document, const char* dictionary_name, const char* key, LOTypedValueRef value_in);
896
+
897
+ /**
898
+ @brief Gets an attribute from a given dictionary belonging to a document.
899
+ @since LayOut 2026, API 11.0
900
+ @param[in] document The document object.
901
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve the value from.
902
+ @param[in] key The key to use when adding to the attribute dictionary.
903
+ @param[out] value_out The value retrieved from the attribute dictionary.
904
+ @related LODocumentRef
905
+ @return
906
+ - \ref SU_ERROR_NONE on success
907
+ - \ref SU_ERROR_INVALID_INPUT if \p document does not refer to a valid object
908
+ - \ref SU_ERROR_INVALID_OUTPUT if \p value_out does not refer to a valid object
909
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
910
+ - \ref SU_ERROR_NO_DATA if no attribute dictionary exists with the given name, or if the attribute
911
+ dictionary does not contain the given key
912
+ */
913
+ LO_RESULT LODocumentGetAttribute(
914
+ LODocumentRef document, const char* dictionary_name, const char* key,
915
+ LOTypedValueRef value_out);
916
+
917
+ /**
918
+ @brief Removes an attribute from a given dictionary belonging to a Document. If key is nullptr, then
919
+ the entire dictionary will be removed from the Document.
920
+ @since LayOut 2026, API 11.0
921
+ @param[in] document The document object.
922
+ @param[in] dictionary_name The name of the attribute dictionary object to remove.
923
+ @param[in] key The key to remove from the attribute dictionary.
924
+ @related LODocumentRef
925
+ @return
926
+ - \ref SU_ERROR_NONE on success
927
+ - \ref SU_ERROR_INVALID_INPUT if \p document does not refer to a valid object
928
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name is NULL
929
+ */
930
+ LO_RESULT LODocumentDeleteAttribute(
931
+ LODocumentRef document, const char* dictionary_name, const char* key);
932
+
860
933
  #ifdef __cplusplus
861
934
  } // extern "C" {
862
935
  #endif
@@ -1,4 +1,4 @@
1
- // Copyright 2015-2023 Trimble Inc. All rights reserved.
1
+ // Copyright 2015-2024 Trimble Inc. All rights reserved.
2
2
  // This file is intended for public distribution.
3
3
 
4
4
  #ifndef LAYOUT_MODEL_DOCUMENTEXPORTOPTIONS_H_
@@ -24,11 +24,30 @@ const char* const LOExportOption_EndPage = "end_page";
24
24
  /**
25
25
  @brief Dictionary key to use when specifying the page range option for
26
26
  \ref LODocumentExportToPDF or \ref LODocumentExportToImageSet.
27
- The value stored with this key takes precedent over `"start_page"` and `"end_page"`.
27
+ The value stored with this key takes precedent over `"start_page"`
28
+ and `"end_page"`.
28
29
  @since LayOut 2024.0, API 9.0
29
30
  */
30
31
  const char* const LOExportOption_PageRange = "page_range";
31
32
 
33
+ /**
34
+ @brief Dictionary key to use when specifying the page range type option for
35
+ \ref LODocumentExportToPDF or \ref LODocumentExportToImageSet.
36
+ If this value is set to \ref LOExportPageRangeType_All, then
37
+ `"start_page"`, `"end_page"`, and `"page_range"` are ignored. If
38
+ not set, or set to \ref LOExportPageRangeType_Range, then those
39
+ values will be used as outlined.
40
+ @since LayOut 2025.0, API 10.0
41
+ */
42
+ const char* const LOExportOption_PageRangeType = "page_range_type";
43
+
44
+ /**
45
+ @brief Dictionary values to use for the \ref LOExportOption_PageRangeType key.
46
+ @since LayOut 2025.0, API 10.0
47
+ */
48
+ const int LOExportPageRangeType_All = 0;
49
+ const int LOExportPageRangeType_Range = 1;
50
+
32
51
  /**
33
52
  @brief Dictionary key to use when specifying the output resolution option for
34
53
  \ref LODocumentExportToPDF.
@@ -324,6 +324,78 @@ LO_RESULT LOEntityGetLocked(LOEntityRef entity, bool* is_locked);
324
324
  */
325
325
  LO_RESULT LOEntitySetLocked(LOEntityRef entity, bool lock);
326
326
 
327
+ /**
328
+ @brief Gets a copy of an attribute dictionary with the given name from an entity.
329
+ @since LayOut 2026, API 11.0
330
+ @param[in] entity The entity object.
331
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve.
332
+ @param[out] dictionary The attribute dictionary object.
333
+ @related LOEntityRef
334
+ @return
335
+ - \ref SU_ERROR_NONE on success
336
+ - \ref SU_ERROR_INVALID_INPUT if \p entity does not refer to a valid object
337
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name is NULL
338
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p dictionary is NULL
339
+ - \ref SU_ERROR_NO_DATA if \p entity does not have an attribute dictionary with the given name
340
+ - \ref SU_ERROR_UNSUPPORTED if \p entity does not support attribute dictionaries
341
+ */
342
+ LO_RESULT LOEntityCreateAttributeDictionaryCopy(
343
+ LOEntityRef entity, const char* dictionary_name, LODictionaryRef* dictionary);
344
+
345
+ /**
346
+ @brief Sets an attribute dictionary to a given dictionary belonging to an entity.
347
+ @since LayOut 2026, API 11.0
348
+ @param[in] entity The entity object.
349
+ @param[in] dictionary_name The name of the attribute dictionary object being added to.
350
+ @param[in] key The key to use when adding to the attribute dictionary.
351
+ @param[in] value_in The value to be added to the attribute dictionary.
352
+ @related LOEntityRef
353
+ @return
354
+ - \ref SU_ERROR_NONE on success
355
+ - \ref SU_ERROR_INVALID_INPUT if \p entity does not refer to a valid object
356
+ - \ref SU_ERROR_INVALID_ARGUMENT if \p value_in contains no data
357
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
358
+ - \ref SU_ERROR_UNSUPPORTED if \p entity does not support attribute dictionaries or
359
+ \p dictionary_name or \p key are empty
360
+ */
361
+ LO_RESULT LOEntitySetAttribute(
362
+ LOEntityRef entity, const char* dictionary_name, const char* key, LOTypedValueRef value_in);
363
+
364
+ /**
365
+ @brief Gets an attribute from a given dictionary belonging to an entity.
366
+ @since LayOut 2026, API 11.0
367
+ @param[in] entity The entity object.
368
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve the value from.
369
+ @param[in] key The key to use when adding to the attribute dictionary.
370
+ @param[out] value_out The value retrieved from the attribute dictionary.
371
+ @related LOEntityRef
372
+ @return
373
+ - \ref SU_ERROR_NONE on success
374
+ - \ref SU_ERROR_INVALID_INPUT if \p document does not refer to a valid object
375
+ - \ref SU_ERROR_INVALID_OUTPUT if \p value_out does not refer to a valid object
376
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
377
+ - \ref SU_ERROR_NO_DATA if no attribute dictionary exists with the given name, or if the attribute
378
+ dictionary does not contain the given key
379
+ */
380
+ LO_RESULT LOEntityGetAttribute(
381
+ LOEntityRef entity, const char* dictionary_name, const char* key, LOTypedValueRef value_out);
382
+
383
+ /**
384
+ @brief Removes an attribute from a given dictionary belonging to an Entity. If key is nullptr, then
385
+ the entire dictionary will be removed from the Entity.
386
+ @since LayOut 2026, API 11.0
387
+ @param[in] entity The entity object.
388
+ @param[in] dictionary_name The name of the attribute dictionary object to remove.
389
+ @param[in] key The key to remove from the attribute dictionary.
390
+ @related LOEntityRef
391
+ @return
392
+ - \ref SU_ERROR_NONE on success
393
+ - \ref SU_ERROR_INVALID_INPUT if \p entity does not refer to a valid object
394
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
395
+ - \ref SU_ERROR_UNSUPPORTED if \p entity does not support attribute dictionaries
396
+ */
397
+ LO_RESULT LOEntityDeleteAttribute(LOEntityRef entity, const char* dictionary_name, const char* key);
398
+
327
399
  #ifdef __cplusplus
328
400
  } // end extern "C"
329
401
  #endif // __cplusplus
@@ -1,4 +1,4 @@
1
- // Copyright 2015 Trimble Navigation Ltd. All rights reserved.
1
+ // Copyright 2015-2025 Trimble Inc. All rights reserved.
2
2
  // This file is intended for public distribution.
3
3
 
4
4
  #ifndef LAYOUT_MODEL_GROUP_H_
@@ -184,6 +184,7 @@ LO_RESULT LOGroupSetScaleFactor(
184
184
  LOGroupRef group, double scale_factor, LODocumentUnits units,
185
185
  LOGroupResizeBehaviorType resize_behavior);
186
186
 
187
+
187
188
  /**
188
189
  @brief Returns the scale units for a group.
189
190
  @since LayOut 2018, API 3.0
@@ -43,13 +43,26 @@ typedef enum {
43
43
  LONumLinearDimensionLeaderLineTypes
44
44
  } LOLinearDimensionLeaderLineType;
45
45
 
46
+ /**
47
+ @enum LOLinearDimensionAlignment
48
+ @brief Defines how the dimension line should align on the page when creating a new linear dimension.
49
+ @since LayOut 2026.0, API 11.0
50
+ */
51
+ typedef enum {
52
+ LOLinearDimensionAlignment_Aligned = 0, /// Align the dimension line with the connection points.
53
+ LOLinearDimensionAlignment_Vertical, /// Align the dimension line vertically on the paper.
54
+ LOLinearDimensionAlignment_Horizontal, /// Align the dimension line horizontally on the paper.
55
+ LONumLinearDimensionAlignments
56
+ } LOLinearDimensionAlignment;
57
+
46
58
  /**
47
59
  @brief Creates a new disconnected linear dimension object.
48
60
  @param[out] dimension The linear dimension object
49
61
  @param[in] start_point Where the dimension should start
50
62
  @param[in] end_point Where the dimension should end
51
- @param[in] height Distance from the start and end points to the dimension
52
- line
63
+ @param[in] height Distance from the start and end points to the dimension line
64
+ @note This is equivalent to using LOLinearDimensionCreateWithAlignment with
65
+ \ref LOLinearDimensionAlignment_Aligned.
53
66
  @return
54
67
  - \ref SU_ERROR_NONE on success
55
68
  - \ref SU_ERROR_NULL_POINTER_OUTPUT if dimension is NULL
@@ -61,6 +74,30 @@ LO_RESULT LOLinearDimensionCreate(
61
74
  LOLinearDimensionRef* dimension, const LOPoint2D* start_point, const LOPoint2D* end_point,
62
75
  double height);
63
76
 
77
+ /**
78
+ @brief Creates a new disconnected linear dimension object with a specific dimension line alignment.
79
+ @param[out] dimension The linear dimension object
80
+ @param[in] start_point Where the dimension should start
81
+ @param[in] end_point Where the dimension should end
82
+ @param[in] height Distance from the start point to the dimension line. Negative height will
83
+ create a dimension line to the left or down from the connection points
84
+ @param[in] alignment Dimension line alignment type. The dimension line can be horizontal,
85
+ vertical, or aligned with the connection points.
86
+ @since LayOut 2026.0, API 11.0
87
+ @return
88
+ - \ref SU_ERROR_NONE on success
89
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p dimension is NULL
90
+ - \ref SU_ERROR_OVERWRITE_VALID if *dimension already refers to a valid object
91
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p start_point is NULL
92
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p end_point is NULL
93
+ - \ref SU_ERROR_OUT_OF_RANGE if \p alignment is not a valid value
94
+ - \ref SU_ERROR_INVALID_ARGUMENT if the combination of start_point, end_point, and alignment can't
95
+ create a valid dimension.
96
+ */
97
+ LO_RESULT LOLinearDimensionCreateWithAlignment(
98
+ LOLinearDimensionRef* dimension, const LOPoint2D* start_point, const LOPoint2D* end_point,
99
+ double height, LOLinearDimensionAlignment alignment);
100
+
64
101
  /**
65
102
  @brief Adds a reference to a linear dimension object.
66
103
  @param[in] dimension The linear dimension object.
@@ -210,6 +247,21 @@ LO_RESULT LOLinearDimensionGetLeaderLineType(
210
247
  LO_RESULT LOLinearDimensionSetLeaderLineType(
211
248
  LOLinearDimensionRef dimension, LOLinearDimensionLeaderLineType leader_line_type);
212
249
 
250
+ /**
251
+ @brief Gets whether the linear dimension's leader line is visible.
252
+ @note This will return false if the leader line type is set to hidden or the leader line's
253
+ length is zero.
254
+ @since LayOut 2026.0, API 11.0
255
+ @param[in] dimension The linear dimension object.
256
+ @param[out] leader_line_visible Whether the dimension's leader line is visible.
257
+ @return
258
+ - \ref SU_ERROR_NONE on success
259
+ - \ref SU_ERROR_INVALID_INPUT if \p dimension does not refer to a valid object
260
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p leader_line_visible is NULL
261
+ */
262
+ LO_RESULT LOLinearDimensionGetLeaderLineVisible(
263
+ LOLinearDimensionRef dimension, bool* leader_line_visible);
264
+
213
265
  /**
214
266
  @brief Gets whether or not the scale for the dimension length text is set
215
267
  automatically.
@@ -254,6 +254,76 @@ LO_RESULT LOPageCreateReverseEntityIterator(
254
254
  */
255
255
  LO_RESULT LOPageGetDocument(LOPageRef page, LODocumentRef* document);
256
256
 
257
+ /**
258
+ @brief Gets a copy of an attribute dictionary with the given name from a page.
259
+ @since LayOut 2026, API 11.0
260
+ @param[in] page The page object.
261
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve.
262
+ @param[out] dictionary The attribute dictionary object.
263
+ @related LOPageRef
264
+ @return
265
+ - \ref SU_ERROR_NONE on success
266
+ - \ref SU_ERROR_INVALID_INPUT if \p page does not refer to a valid object
267
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name is NULL
268
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if dictionary is NULL
269
+ - \ref SU_ERROR_NO_DATA if \p page does not have an attribute dictionary with the given name
270
+ */
271
+ LO_RESULT LOPageCreateAttributeDictionaryCopy(
272
+ LOPageRef page, const char* dictionary_name, LODictionaryRef* dictionary);
273
+
274
+ /**
275
+ @brief Sets an attribute to a given dictionary belonging to a page.
276
+
277
+ @since LayOut 2026, API 11.0
278
+ @param[in] page The page object.
279
+ @param[in] dictionary_name The name of the attribute dictionary object being added to.
280
+ @param[in] key The key to use when adding to the attribute dictionary.
281
+ @param[in] value_in The value to be added to the attribute dictionary.
282
+ @related LOPageRef
283
+ @return
284
+ - \ref SU_ERROR_NONE on success
285
+ - \ref SU_ERROR_INVALID_INPUT if \p page does not refer to a valid object
286
+ - \ref SU_ERROR_INVALID_ARGUMENT if \p value_in contains no data
287
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
288
+ - \ref SU_ERROR_UNSUPPORTED if \p dictionary_name is empty
289
+ */
290
+ LO_RESULT LOPageSetAttribute(
291
+ LOPageRef page, const char* dictionary_name, const char* key, LOTypedValueRef value_in);
292
+
293
+ /**
294
+ @brief Gets an attribute from a given dictionary belonging to a page.
295
+ @since LayOut 2026, API 11.0
296
+ @param[in] page The page object.
297
+ @param[in] dictionary_name The name of the attribute dictionary object to retrieve the value from.
298
+ @param[in] key The key to use when adding to the attribute dictionary.
299
+ @param[out] value_out The value retrieved from the attribute dictionary.
300
+ @related LOPageRef
301
+ @return
302
+ - \ref SU_ERROR_NONE on success
303
+ - \ref SU_ERROR_INVALID_INPUT if \p page does not refer to a valid object
304
+ - \ref SU_ERROR_INVALID_OUTPUT if \p value_out does not refer to a valid object
305
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
306
+ - \ref SU_ERROR_NO_DATA if no attribute dictionary exists with the given name, or if the attribute
307
+ dictionary does not contain the given key
308
+ */
309
+ LO_RESULT LOPageGetAttribute(
310
+ LOPageRef page, const char* dictionary_name, const char* key, LOTypedValueRef value_out);
311
+
312
+ /**
313
+ @brief Removes an attribute from a given dictionary belonging to a page. If key is nullptr, then
314
+ the entire dictionary will be removed from the Page.
315
+ @since LayOut 2026, API 11.0
316
+ @param[in] page The page object.
317
+ @param[in] dictionary_name The name of the attribute dictionary object to remove.
318
+ @param[in] key The key to remove from the attribute dictionary.
319
+ @related LOPageRef
320
+ @return
321
+ - \ref SU_ERROR_NONE on success
322
+ - \ref SU_ERROR_INVALID_INPUT if \p page does not refer to a valid object
323
+ - \ref SU_ERROR_NULL_POINTER_INPUT if \p dictionary_name or \p key are NULL
324
+ */
325
+ LO_RESULT LOPageDeleteAttribute(LOPageRef page, const char* dictionary_name, const char* key);
326
+
257
327
  #ifdef __cplusplus
258
328
  } // end extern "C"
259
329
  #endif // __cplusplus
@@ -117,7 +117,38 @@ LO_EXPORT LOSketchUpModelRef LOSketchUpModelFromEntity(LOEntityRef entity);
117
117
  LO_EXPORT LOEntityRef LOSketchUpModelToEntity(LOSketchUpModelRef model);
118
118
 
119
119
  /**
120
- @brief Gets the SUModelRef representation of the SketchUp model.
120
+ @brief Applies the SketchUp model viewport's overrides on the SketchUp model retrieved by
121
+ \ref LOSketchUpModelGetModel.
122
+ @note The SketchUp model must be reset back to its default state by calling
123
+ \ref LOSketchUpModelResetViewportOverridesOnModel.
124
+ @since LayOut 2026.0, API 11.0
125
+ @param[in] model The SketchUp model object.
126
+ @return
127
+ - \ref SU_ERROR_NONE on success
128
+ - \ref SU_ERROR_INVALID_INPUT if \p model does not refer to a valid object
129
+ */
130
+ LO_RESULT LOSketchUpModelSetViewportOverridesOnModel(LOSketchUpModelRef model);
131
+
132
+ /**
133
+ @brief Resets the SketchUp model used by this viewport back to its default state.
134
+ @note This must be done after a corresponding call to
135
+ \ref LOSketchUpModelSetViewportOverridesOnModel to ensure proper behavior of the SketchUp
136
+ model when multiple viewports exist using the same SketchUp model reference.
137
+ @since LayOut 2026.0, API 11.0
138
+ @param[in] model The SketchUp model object.
139
+ @return
140
+ - \ref SU_ERROR_NONE on success
141
+ - \ref SU_ERROR_INVALID_INPUT if \p model does not refer to a valid object
142
+ */
143
+ LO_RESULT LOSketchUpModelResetViewportOverridesOnModel(LOSketchUpModelRef model);
144
+
145
+ /**
146
+ @brief Gets the \p SUModelRef representation of the SketchUp model.
147
+ @note This \p SUModelRef is shared by all SketchUp model viewports that use the same file
148
+ reference. To apply the SketchUp model viewport's overrides to the \p SUModelRef
149
+ call \ref LOSketchUpModelSetViewportOverridesOnModel. You must reset the SketchUp model
150
+ back to its default state by calling \ref LOSketchUpModelResetViewportOverridesOnModel
151
+ once you are done.
121
152
  @since LayOut 2017, API 2.0
122
153
  @param[in] model The SketchUp model object.
123
154
  @param[out] sumodel The model reference object.
@@ -270,6 +301,32 @@ LO_RESULT LOSketchUpModelGetCameraModified(LOSketchUpModelRef model, bool* modif
270
301
  */
271
302
  LO_RESULT LOSketchUpModelResetCamera(LOSketchUpModelRef model);
272
303
 
304
+ /**
305
+ @brief Gets a SUCameraRef representing the camera for the viewport.
306
+ @since LayOut 2026.0, API 11.0
307
+ @param[in] model The SketchUp model object.
308
+ @param[out] sucamera The camera reference object.
309
+ @return
310
+ - \ref SU_ERROR_NONE on success
311
+ - \ref SU_ERROR_INVALID_INPUT if \p model does not refer to a valid object
312
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p sucamera is NULL
313
+ - \ref SU_ERROR_INVALID_OUTPUT if \p *sucamera does not refer to a valid object
314
+ */
315
+ LO_RESULT LOSketchUpModelGetCamera(LOSketchUpModelRef model, SUCameraRef* sucamera);
316
+
317
+ /**
318
+ @brief Sets the camera for the viewport.
319
+ @note Setting the camera will flag the viewport as having a modified camera.
320
+ @since LayOut 2026.0, API 11.0
321
+ @param[in] model The SketchUp model object.
322
+ @param[in] sucamera The camera reference object.
323
+ @return
324
+ - \ref SU_ERROR_NONE on success
325
+ - \ref SU_ERROR_INVALID_INPUT if \p model does not refer to a valid object
326
+ - \ref SU_ERROR_INVALID_INPUT if \p sucamera does not refer to a valid object
327
+ */
328
+ LO_RESULT LOSketchUpModelSetCamera(LOSketchUpModelRef model, SUCameraRef sucamera);
329
+
273
330
  /**
274
331
  @brief Gets whether the SketchUp model's shadow or fog effects have been modified.
275
332
  @param[in] model The SketchUp model object.
@@ -6,6 +6,8 @@
6
6
 
7
7
  #include <LayOutAPI/common.h>
8
8
  #include <LayOutAPI/model/defs.h>
9
+ #include <LayOutAPI/geometry/geometry.h>
10
+ #include <SketchUpAPI/color.h>
9
11
 
10
12
  /**
11
13
  @struct LOStyleRef
@@ -74,6 +76,17 @@ typedef enum {
74
76
  LONumTextUnderlines
75
77
  } LOTextUnderline;
76
78
 
79
+ /**
80
+ @enum LOTextStrikeThrough
81
+ @brief Defines strike through styles for formatted text.
82
+ @since LayOut 2026.0, API 11.0
83
+ */
84
+ typedef enum {
85
+ LOTextStrikeThrough_None = 0, ///< No strike through.
86
+ LOTextStrikeThrough_Single, ///< Single strike through.
87
+ LONumTextStrikeThroughs
88
+ } LOTextStrikeThrough;
89
+
77
90
  /**
78
91
  @enum LOTextElevation
79
92
  @brief Defines super/subscript options for formatted text.
@@ -203,9 +216,6 @@ typedef enum {
203
216
  LONumSubEntityTypes
204
217
  } LOSubEntityType;
205
218
 
206
- #include "entity.h"
207
- #include <SketchUpAPI/color.h>
208
-
209
219
  #ifdef __cplusplus
210
220
  extern "C" {
211
221
  #endif // __cplusplus
@@ -723,6 +733,32 @@ LO_RESULT LOStyleGetTextUnderline(LOStyleRef style, LOTextUnderline* underline_t
723
733
  */
724
734
  LO_RESULT LOStyleSetTextUnderline(LOStyleRef style, LOTextUnderline underline_type);
725
735
 
736
+ /**
737
+ @brief Gets the text strike through type for a style.
738
+ @since LayOut 2026.0, API 11.0
739
+ @param[in] style The style object.
740
+ @param[out] strikethrough_type The type of strike through for text.
741
+ @return
742
+ - \ref SU_ERROR_NONE on success
743
+ - \ref SU_ERROR_INVALID_INPUT if \p style does not refer to a valid object
744
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p strikethrough_type is NULL
745
+ - \ref SU_ERROR_NO_DATA if \p style doesn't specify a value for this style
746
+ attribute
747
+ */
748
+ LO_RESULT LOStyleGetTextStrikeThrough(LOStyleRef style, LOTextStrikeThrough* strikethrough_type);
749
+
750
+ /**
751
+ @brief Sets the text strike through type of a style.
752
+ @since LayOut 2026.0, API 11.0
753
+ @param[in] style The style object.
754
+ @param[out] strikethrough_type The type of strike through to use for text.
755
+ @return
756
+ - \ref SU_ERROR_NONE on success
757
+ - \ref SU_ERROR_INVALID_INPUT if \p style does not refer to a valid object
758
+ - \ref SU_ERROR_OUT_OF_RANGE if \p strikethrough_type is not a valid strike through type
759
+ */
760
+ LO_RESULT LOStyleSetTextStrikeThrough(LOStyleRef style, LOTextStrikeThrough strikethrough_type);
761
+
726
762
  /**
727
763
  @brief Gets the text elevation type (normal, superscript, or subscript) of a
728
764
  style.
@@ -48,6 +48,8 @@ columns.
48
48
  */
49
49
  LO_RESULT LOTableCreate(
50
50
  LOTableRef* table, const LOAxisAlignedRect2D* bounds, size_t rows, size_t columns);
51
+
52
+
51
53
  /**
52
54
  @brief Gets a table from a given entity.
53
55
  @since LayOut 2017, API 2.0
@@ -27,6 +27,8 @@ typedef enum {
27
27
  LOTypedValueType_Int32,
28
28
  LOTypedValueType_Double,
29
29
  LOTypedValueType_String,
30
+ // @since LayOut 2026.0, API 11.0
31
+ LOTypedValueType_Dictionary,
30
32
  LONumTypedValueTypes
31
33
  } LOTypedValueType;
32
34
 
@@ -134,7 +136,7 @@ LO_RESULT LOTypedValueSetDouble(LOTypedValueRef typed_value, double double_value
134
136
  @return
135
137
  - \ref SU_ERROR_NONE on success
136
138
  - \ref SU_ERROR_INVALID_INPUT if typed_value does not refer to a valid object
137
- - \ref SU_ERROR_NO_DATA if the typed value does not contain a string.
139
+ - \ref SU_ERROR_NO_DATA if the typed value does not contain a string
138
140
  - \ref SU_ERROR_NULL_POINTER_OUTPUT if out_string is NULL
139
141
  - \ref SU_ERROR_INVALID_OUTPUT if out_string does not refer to a valid object
140
142
  */
@@ -145,10 +147,32 @@ LO_RESULT LOTypedValueGetString(LOTypedValueRef typed_value, SUStringRef* out_st
145
147
  @since LayOut 2018, API 3.0
146
148
  @return
147
149
  - \ref SU_ERROR_NONE on success
150
+ - \ref SU_ERROR_INVALID_INPUT if typed_value is not a valid object
148
151
  - \ref SU_ERROR_NULL_POINTER_INPUT if string is NULL
149
152
  */
150
153
  LO_RESULT LOTypedValueSetString(LOTypedValueRef typed_value, const char* string);
151
154
 
155
+ /**
156
+ @brief Gets a dictionary from the typed value object.
157
+ @since LayOut 2026.0, API 11.0
158
+ @return
159
+ - \ref SU_ERROR_NONE on success
160
+ - \ref SU_ERROR_INVALID_INPUT if typed_value does not refer to a valid object
161
+ - \ref SU_ERROR_NO_DATA if the typed value does not contain a dictionary
162
+ - \ref SU_ERROR_NULL_POINTER_OUTPUT if out_string is NULL
163
+ - \ref SU_ERROR_INVALID_OUTPUT if out_string does not refer to a valid object
164
+ */
165
+ LO_RESULT LOTypedValueGetDictionary(LOTypedValueRef typed_value, LODictionaryRef* out_dictionary);
166
+
167
+ /**
168
+ @brief Sets the value of typed_value to the given dictionary.
169
+ @since LayOut 2026.0, API 11.0
170
+ @return
171
+ - \ref SU_ERROR_NONE on success
172
+ - \ref SU_ERROR_INVALID_INPUT if typed_value is not a valid object
173
+ */
174
+ LO_RESULT LOTypedValueSetDictionary(LOTypedValueRef typed_value, LODictionaryRef dictionary);
175
+
152
176
  #ifdef __cplusplus
153
177
  } // end extern "C"
154
178
  #endif // __cplusplus
@@ -29,8 +29,8 @@ extern "C" {
29
29
  - \ref SU_ERROR_NULL_POINTER_OUTPUT if \p overlay is NULL
30
30
  - \ref SU_ERROR_OVERWRITE_VALID if \p overlay is already a valid object
31
31
  - \ref SU_ERROR_DUPLICATE if the given SUOverlayCreateInfo::id already exists in the model
32
- @relatedalso SUModelRef
33
- @relatedalso SUOverlayRef
32
+ @related SUModelRef
33
+ @see SUOverlayRef
34
34
  */
35
35
  SU_RESULT SUModelCreateOverlay(
36
36
  SUModelRef model, const struct SUOverlayCreateInfo* info, SUOverlayRef* overlay);
@@ -45,8 +45,8 @@ SU_RESULT SUModelCreateOverlay(
45
45
  - \ref SU_ERROR_INVALID_INPUT if \p model or \p overlay is an invalid object
46
46
  - \ref SU_ERROR_NULL_POINTER_INPUT if \p overlay is NULL
47
47
  - \ref SU_ERROR_NO_DATA if \p overlay could be found in the model
48
- @relatedalso SUModelRef
49
- @relatedalso SUOverlayRef
48
+ @related SUModelRef
49
+ @see SUOverlayRef
50
50
  */
51
51
  SU_RESULT SUModelReleaseOverlay(SUModelRef model, SUOverlayRef* overlay);
52
52
 
@@ -58,18 +58,25 @@ struct SUBeginFrameInfo {
58
58
  double aspect_ratio; ///< Aspect ratio of the view port
59
59
  double near_clipping_distance; ///< Distance to near clipping plane from the camera
60
60
  double far_clipping_distance; ///< Distance to far clipping plane from the camera
61
- double projection_matrix[16]; ///< Projection Matrix.
62
- double view_matrix[16]; ///< View Matrix
61
+ double projection_matrix[16]; ///< Projection Matrix, stored in row major order.
62
+ double view_matrix[16]; ///< View Matrix, stored in row major order.
63
63
  double viewport_width; ///< Viewport width
64
64
  double viewport_height; ///< Viewport height
65
65
 
66
- double fov; ///< Field of view of the perspective camera (in degrees). Valid only when
67
- ///< is_perspective is true.
66
+ /**
67
+ * Field of view of the perspective camera (in degrees). Valid only when
68
+ * is_perspective is true.
69
+ */
70
+ double fov;
71
+
68
72
  double height; ///< Parallel projection frustum height. Valid only when is_perspective is false.
69
73
  bool is_perspective; ///< Whether the camera is perspective or orthographic.
70
74
 
71
- void* reserved; ///< Reserved for internal use. This will be set to NULL by SketchUp and should
72
- ///< not be modified.
75
+ /**
76
+ * Reserved for internal use. This will be set to NULL by SketchUp and should
77
+ * not be modified.
78
+ */
79
+ void* reserved;
73
80
  };
74
81
 
75
82
  /**
@@ -126,6 +133,7 @@ enum SUOverlayImageOrientation : uint8_t {
126
133
  @struct SUOverlayDrawFrameInfo
127
134
  @brief Data that SketchUp will use the to blend the given color/depth buffer onto SketchUp
128
135
  rendering.
136
+ @attention color and depth buffers must be valid until the end_frame callback is called.
129
137
  @related SUOverlayRef
130
138
  */
131
139
  struct SUOverlayDrawFrameInfo {
@@ -137,9 +145,11 @@ struct SUOverlayDrawFrameInfo {
137
145
  double blending_factor;
138
146
 
139
147
  /// Color buffer info. ptr points to a uint8_t buffer with 4 channels.
148
+ /// The buffer pointed to by color must be valid until the end_frame callback is called.
140
149
  struct SUDrawFrameMemoryBuffer color;
141
150
 
142
151
  /// Depth buffer info. ptr points to a float buffer.
152
+ /// The buffer pointed to by color must be valid until the end_frame callback is called.
143
153
  struct SUDrawFrameMemoryBuffer depth;
144
154
 
145
155
  /// Reserved for internal use. This will be set to NULL by SketchUp and should not be modified.
@@ -154,6 +164,8 @@ typedef void (*SUOverlayDrawFrameFuncT)(SUOverlayRef, struct SUOverlayDrawFrameI
154
164
 
155
165
  /**
156
166
  @brief Signature for SUOverlayCreateInfo::end_frame callback
167
+ @attention SUOverlayDrawFrameInfo::color and SUOverlayDrawFrameInfo::depth buffers must be valid
168
+ until the end_frame callback is called.
157
169
  @related SUOverlayRef
158
170
  */
159
171
  typedef void (*SUOverlayEndFrameFuncT)(SUOverlayRef, void*);
@@ -224,6 +236,8 @@ struct SUOverlayCreateInfo {
224
236
  SUOverlayDrawFrameFuncT draw_frame;
225
237
  /// Function that SketchUp will call to signal the resources passed in draw_frame are no longer
226
238
  /// needed.
239
+ /// SUOverlayDrawFrameInfo::color and SUOverlayDrawFrameInfo::depth buffers must be valid until
240
+ /// the end_frame callback is called.
227
241
  SUOverlayEndFrameFuncT end_frame;
228
242
  };
229
243