scriptup 0.0.0

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 (241) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +11 -0
  3. data/README.md +5 -0
  4. data/ext/attribute_dictionaries.c +45 -0
  5. data/ext/attribute_dictionaries.h +3 -0
  6. data/ext/attribute_dictionary.c +156 -0
  7. data/ext/attribute_dictionary.h +3 -0
  8. data/ext/behavior.c +10 -0
  9. data/ext/behavior.h +3 -0
  10. data/ext/color.c +211 -0
  11. data/ext/color.h +3 -0
  12. data/ext/component_definition.c +188 -0
  13. data/ext/component_definition.h +3 -0
  14. data/ext/component_instance.c +10 -0
  15. data/ext/component_instance.h +3 -0
  16. data/ext/definition_list.c +145 -0
  17. data/ext/definition_list.h +3 -0
  18. data/ext/drawing_element.c +10 -0
  19. data/ext/drawing_element.h +3 -0
  20. data/ext/entities.c +11 -0
  21. data/ext/entities.h +3 -0
  22. data/ext/entity.c +253 -0
  23. data/ext/entity.h +3 -0
  24. data/ext/extconf.rb +38 -0
  25. data/ext/material.c +242 -0
  26. data/ext/material.h +3 -0
  27. data/ext/materials.c +80 -0
  28. data/ext/materials.h +3 -0
  29. data/ext/model.c +42 -0
  30. data/ext/model.h +3 -0
  31. data/ext/sketchup.c +89 -0
  32. data/ext/sketchup.h +4 -0
  33. data/ext/texture.c +9 -0
  34. data/ext/texture.h +3 -0
  35. data/ext/typed_value.c +84 -0
  36. data/ext/typed_value.h +5 -0
  37. data/ext/utils.h +80 -0
  38. data/lib/sketchup.rb +12 -0
  39. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/application.h +36 -0
  40. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/model.h +59 -0
  41. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/overlay.h +248 -0
  42. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/ruby_api.h +118 -0
  43. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/color.h +107 -0
  44. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/common.h +178 -0
  45. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/defs.h +19 -0
  46. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/extension_license.h +62 -0
  47. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/bounding_box.h +34 -0
  48. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/plane3d.h +153 -0
  49. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point2d.h +96 -0
  50. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point3d.h +98 -0
  51. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/ray3d.h +64 -0
  52. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/transformation.h +321 -0
  53. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/transformation2d.h +163 -0
  54. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector2d.h +235 -0
  55. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector3d.h +285 -0
  56. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry.h +152 -0
  57. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/modelexporterplugin.h +165 -0
  58. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/modelimporterplugin.h +183 -0
  59. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/pluginprogresscallback.h +84 -0
  60. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/initialize.h +43 -0
  61. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/length_formatter.h +424 -0
  62. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/arccurve.h +244 -0
  63. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/arrow_type.h +17 -0
  64. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/attribute_dictionary.h +161 -0
  65. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/axes.h +242 -0
  66. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/camera.h +398 -0
  67. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classification_attribute.h +89 -0
  68. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classification_info.h +125 -0
  69. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classifications.h +86 -0
  70. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_definition.h +588 -0
  71. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_instance.h +344 -0
  72. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/curve.h +143 -0
  73. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/defs.h +142 -0
  74. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension.h +222 -0
  75. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_linear.h +421 -0
  76. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_radial.h +194 -0
  77. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_style.h +253 -0
  78. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/drawing_element.h +198 -0
  79. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dynamic_component_attribute.h +92 -0
  80. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dynamic_component_info.h +70 -0
  81. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/edge.h +271 -0
  82. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/edge_use.h +214 -0
  83. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entities.h +834 -0
  84. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity.h +186 -0
  85. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity_list.h +80 -0
  86. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity_list_iterator.h +90 -0
  87. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/face.h +686 -0
  88. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/font.h +138 -0
  89. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/geometry.h +20 -0
  90. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/geometry_input.h +685 -0
  91. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/group.h +244 -0
  92. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/guide_line.h +155 -0
  93. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/guide_point.h +153 -0
  94. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/image.h +288 -0
  95. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/image_rep.h +275 -0
  96. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/instancepath.h +266 -0
  97. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/layer.h +265 -0
  98. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/layer_folder.h +301 -0
  99. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/line_style.h +211 -0
  100. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/line_styles.h +81 -0
  101. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/location.h +65 -0
  102. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/loop.h +182 -0
  103. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/material.h +390 -0
  104. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/mesh_helper.h +187 -0
  105. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model.h +1663 -0
  106. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model_version.h +49 -0
  107. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/opening.h +72 -0
  108. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/options_manager.h +79 -0
  109. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/options_provider.h +166 -0
  110. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/polyline3d.h +140 -0
  111. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/rendering_options.h +179 -0
  112. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/scene.h +836 -0
  113. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/schema.h +56 -0
  114. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/schema_type.h +26 -0
  115. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/section_plane.h +212 -0
  116. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/selection.h +156 -0
  117. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/shadow_info.h +147 -0
  118. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/skp.h +45 -0
  119. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/style.h +303 -0
  120. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/styles.h +190 -0
  121. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/text.h +384 -0
  122. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/texture.h +358 -0
  123. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/texture_writer.h +280 -0
  124. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/typed_value.h +390 -0
  125. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/uv_helper.h +79 -0
  126. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/vertex.h +154 -0
  127. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/sketchup.h +122 -0
  128. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/sketchup_info.h +65 -0
  129. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/slapi.h +16 -0
  130. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/transformation.h +16 -0
  131. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/unicodestring.h +239 -0
  132. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/utils/math_helpers.h +124 -0
  133. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonGeometry.dylib +0 -0
  134. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonGeoutils.dylib +0 -0
  135. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonImage.dylib +0 -0
  136. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonPreferences.dylib +0 -0
  137. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUnits.dylib +0 -0
  138. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUtils.dylib +0 -0
  139. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonZip.dylib +0 -0
  140. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Resources/Info.plist +50 -0
  141. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/SketchUpAPI +0 -0
  142. data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/_CodeSignature/CodeResources +835 -0
  143. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.dll +0 -0
  144. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.lib +0 -0
  145. data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpCommonPreferences.dll +0 -0
  146. data/sketchup-sdk-win/binaries/sketchup/x64/sketchup.lib +0 -0
  147. data/sketchup-sdk-win/headers/SketchUpAPI/application/application.h +36 -0
  148. data/sketchup-sdk-win/headers/SketchUpAPI/application/model.h +59 -0
  149. data/sketchup-sdk-win/headers/SketchUpAPI/application/overlay.h +248 -0
  150. data/sketchup-sdk-win/headers/SketchUpAPI/application/ruby_api.h +118 -0
  151. data/sketchup-sdk-win/headers/SketchUpAPI/color.h +107 -0
  152. data/sketchup-sdk-win/headers/SketchUpAPI/common.h +178 -0
  153. data/sketchup-sdk-win/headers/SketchUpAPI/defs.h +19 -0
  154. data/sketchup-sdk-win/headers/SketchUpAPI/extension_license.h +62 -0
  155. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/bounding_box.h +34 -0
  156. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/plane3d.h +153 -0
  157. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point2d.h +96 -0
  158. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point3d.h +98 -0
  159. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/ray3d.h +64 -0
  160. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/transformation.h +321 -0
  161. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/transformation2d.h +163 -0
  162. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector2d.h +235 -0
  163. data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector3d.h +285 -0
  164. data/sketchup-sdk-win/headers/SketchUpAPI/geometry.h +152 -0
  165. data/sketchup-sdk-win/headers/SketchUpAPI/import_export/modelexporterplugin.h +165 -0
  166. data/sketchup-sdk-win/headers/SketchUpAPI/import_export/modelimporterplugin.h +183 -0
  167. data/sketchup-sdk-win/headers/SketchUpAPI/import_export/pluginprogresscallback.h +84 -0
  168. data/sketchup-sdk-win/headers/SketchUpAPI/initialize.h +43 -0
  169. data/sketchup-sdk-win/headers/SketchUpAPI/length_formatter.h +424 -0
  170. data/sketchup-sdk-win/headers/SketchUpAPI/model/arccurve.h +244 -0
  171. data/sketchup-sdk-win/headers/SketchUpAPI/model/arrow_type.h +17 -0
  172. data/sketchup-sdk-win/headers/SketchUpAPI/model/attribute_dictionary.h +161 -0
  173. data/sketchup-sdk-win/headers/SketchUpAPI/model/axes.h +242 -0
  174. data/sketchup-sdk-win/headers/SketchUpAPI/model/camera.h +398 -0
  175. data/sketchup-sdk-win/headers/SketchUpAPI/model/classification_attribute.h +89 -0
  176. data/sketchup-sdk-win/headers/SketchUpAPI/model/classification_info.h +125 -0
  177. data/sketchup-sdk-win/headers/SketchUpAPI/model/classifications.h +86 -0
  178. data/sketchup-sdk-win/headers/SketchUpAPI/model/component_definition.h +588 -0
  179. data/sketchup-sdk-win/headers/SketchUpAPI/model/component_instance.h +344 -0
  180. data/sketchup-sdk-win/headers/SketchUpAPI/model/curve.h +143 -0
  181. data/sketchup-sdk-win/headers/SketchUpAPI/model/defs.h +142 -0
  182. data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension.h +222 -0
  183. data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_linear.h +421 -0
  184. data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_radial.h +194 -0
  185. data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_style.h +253 -0
  186. data/sketchup-sdk-win/headers/SketchUpAPI/model/drawing_element.h +198 -0
  187. data/sketchup-sdk-win/headers/SketchUpAPI/model/dynamic_component_attribute.h +92 -0
  188. data/sketchup-sdk-win/headers/SketchUpAPI/model/dynamic_component_info.h +70 -0
  189. data/sketchup-sdk-win/headers/SketchUpAPI/model/edge.h +271 -0
  190. data/sketchup-sdk-win/headers/SketchUpAPI/model/edge_use.h +214 -0
  191. data/sketchup-sdk-win/headers/SketchUpAPI/model/entities.h +834 -0
  192. data/sketchup-sdk-win/headers/SketchUpAPI/model/entity.h +186 -0
  193. data/sketchup-sdk-win/headers/SketchUpAPI/model/entity_list.h +80 -0
  194. data/sketchup-sdk-win/headers/SketchUpAPI/model/entity_list_iterator.h +90 -0
  195. data/sketchup-sdk-win/headers/SketchUpAPI/model/face.h +686 -0
  196. data/sketchup-sdk-win/headers/SketchUpAPI/model/font.h +138 -0
  197. data/sketchup-sdk-win/headers/SketchUpAPI/model/geometry.h +20 -0
  198. data/sketchup-sdk-win/headers/SketchUpAPI/model/geometry_input.h +685 -0
  199. data/sketchup-sdk-win/headers/SketchUpAPI/model/group.h +244 -0
  200. data/sketchup-sdk-win/headers/SketchUpAPI/model/guide_line.h +155 -0
  201. data/sketchup-sdk-win/headers/SketchUpAPI/model/guide_point.h +153 -0
  202. data/sketchup-sdk-win/headers/SketchUpAPI/model/image.h +288 -0
  203. data/sketchup-sdk-win/headers/SketchUpAPI/model/image_rep.h +275 -0
  204. data/sketchup-sdk-win/headers/SketchUpAPI/model/instancepath.h +266 -0
  205. data/sketchup-sdk-win/headers/SketchUpAPI/model/layer.h +265 -0
  206. data/sketchup-sdk-win/headers/SketchUpAPI/model/layer_folder.h +301 -0
  207. data/sketchup-sdk-win/headers/SketchUpAPI/model/line_style.h +211 -0
  208. data/sketchup-sdk-win/headers/SketchUpAPI/model/line_styles.h +81 -0
  209. data/sketchup-sdk-win/headers/SketchUpAPI/model/location.h +65 -0
  210. data/sketchup-sdk-win/headers/SketchUpAPI/model/loop.h +182 -0
  211. data/sketchup-sdk-win/headers/SketchUpAPI/model/material.h +390 -0
  212. data/sketchup-sdk-win/headers/SketchUpAPI/model/mesh_helper.h +187 -0
  213. data/sketchup-sdk-win/headers/SketchUpAPI/model/model.h +1663 -0
  214. data/sketchup-sdk-win/headers/SketchUpAPI/model/model_version.h +49 -0
  215. data/sketchup-sdk-win/headers/SketchUpAPI/model/opening.h +72 -0
  216. data/sketchup-sdk-win/headers/SketchUpAPI/model/options_manager.h +79 -0
  217. data/sketchup-sdk-win/headers/SketchUpAPI/model/options_provider.h +166 -0
  218. data/sketchup-sdk-win/headers/SketchUpAPI/model/polyline3d.h +140 -0
  219. data/sketchup-sdk-win/headers/SketchUpAPI/model/rendering_options.h +179 -0
  220. data/sketchup-sdk-win/headers/SketchUpAPI/model/scene.h +836 -0
  221. data/sketchup-sdk-win/headers/SketchUpAPI/model/schema.h +56 -0
  222. data/sketchup-sdk-win/headers/SketchUpAPI/model/schema_type.h +26 -0
  223. data/sketchup-sdk-win/headers/SketchUpAPI/model/section_plane.h +212 -0
  224. data/sketchup-sdk-win/headers/SketchUpAPI/model/selection.h +156 -0
  225. data/sketchup-sdk-win/headers/SketchUpAPI/model/shadow_info.h +147 -0
  226. data/sketchup-sdk-win/headers/SketchUpAPI/model/skp.h +45 -0
  227. data/sketchup-sdk-win/headers/SketchUpAPI/model/style.h +303 -0
  228. data/sketchup-sdk-win/headers/SketchUpAPI/model/styles.h +190 -0
  229. data/sketchup-sdk-win/headers/SketchUpAPI/model/text.h +384 -0
  230. data/sketchup-sdk-win/headers/SketchUpAPI/model/texture.h +358 -0
  231. data/sketchup-sdk-win/headers/SketchUpAPI/model/texture_writer.h +280 -0
  232. data/sketchup-sdk-win/headers/SketchUpAPI/model/typed_value.h +390 -0
  233. data/sketchup-sdk-win/headers/SketchUpAPI/model/uv_helper.h +79 -0
  234. data/sketchup-sdk-win/headers/SketchUpAPI/model/vertex.h +154 -0
  235. data/sketchup-sdk-win/headers/SketchUpAPI/sketchup.h +122 -0
  236. data/sketchup-sdk-win/headers/SketchUpAPI/sketchup_info.h +65 -0
  237. data/sketchup-sdk-win/headers/SketchUpAPI/slapi.h +16 -0
  238. data/sketchup-sdk-win/headers/SketchUpAPI/transformation.h +16 -0
  239. data/sketchup-sdk-win/headers/SketchUpAPI/unicodestring.h +239 -0
  240. data/sketchup-sdk-win/headers/SketchUpAPI/utils/math_helpers.h +124 -0
  241. metadata +313 -0
data/ext/material.c ADDED
@@ -0,0 +1,242 @@
1
+ #include <stdbool.h>
2
+ #include <material.h>
3
+ #include <SketchUpAPI/sketchup.h>
4
+ #include <utils.h>
5
+
6
+ static int GETCOLOR(VALUE obj)
7
+ {
8
+ int color = NUM2INT(obj);
9
+ if (color > 255)
10
+ return 255;
11
+ else if (color < 0)
12
+ return 0;
13
+ else
14
+ return color;
15
+ }
16
+
17
+ static float GETALPHA(VALUE obj)
18
+ {
19
+ float alpha = NUM2DBL(obj);
20
+ if (alpha > 1.0)
21
+ return 1.0;
22
+ else if (alpha < 0.0)
23
+ return 0.0;
24
+ else
25
+ return alpha;
26
+ }
27
+
28
+ static void dealloc(SUColor* ptr)
29
+ {
30
+ free(ptr);
31
+ }
32
+
33
+ static VALUE VALUE2COLOR(VALUE obj)
34
+ {
35
+ if (rb_obj_is_kind_of(obj, rb_path2class(SKETCHUP_COLOR)))
36
+ return obj;
37
+ else if (rb_type(obj) == T_ARRAY)
38
+ {
39
+ if (RARRAY_LEN(obj) >= 3)
40
+ {
41
+ VALUE* start_arr = RARRAY_PTR(obj);
42
+ VALUE c = rb_obj_alloc(rb_path2class(SKETCHUP_COLOR));
43
+ SUColor* color = DATA_PTR(c);
44
+ color->red = GETCOLOR(start_arr[0]);
45
+ color->green = GETCOLOR(start_arr[1]);
46
+ color->blue = GETCOLOR(start_arr[2]);
47
+ color->alpha = 255;
48
+ return c;
49
+ }
50
+ else
51
+ rb_raise(rb_eArgError, "At least 3 values required");
52
+ }
53
+ else
54
+ rb_raise(rb_eTypeError, "no implicit conversion to Color");
55
+ }
56
+
57
+ static VALUE VALUE2COLORIZATION(VALUE obj)
58
+ {
59
+ int colorization = NUM2INT(obj);
60
+ if (colorization < 0)
61
+ rb_raise(rb_eRangeError, "value cannot be negative");
62
+ else if (colorization > 2)
63
+ rb_raise(rb_eArgError, "Invalid colorization type");
64
+ else
65
+ return colorization;
66
+ }
67
+
68
+ static VALUE Sketchup_Material_Get_name(VALUE self)
69
+ {
70
+ SUMaterialRef material = {DATA_PTR(self)};
71
+ VALUE output;
72
+ GETSTRING(SUMaterialGetName, material, output);
73
+ return output;
74
+ }
75
+
76
+ static VALUE Sketchup_Material_Set_name(VALUE self, VALUE name)
77
+ {
78
+ SUMaterialRef material = {DATA_PTR(self)};
79
+ SUMaterialSetName(material, StringValuePtr(name));
80
+ return name;
81
+ }
82
+
83
+ static VALUE Sketchup_Material_Get_texture(VALUE self)
84
+ {
85
+ SUMaterialRef material = {DATA_PTR(self)};
86
+ SUTextureRef texture = SU_INVALID;
87
+ SUMaterialGetTexture(material, &texture);
88
+ if (SUIsValid(texture))
89
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_TEXTURE), 0, 0, texture.ptr);
90
+ return Qnil;
91
+ }
92
+
93
+ static VALUE Sketchup_Material_Set_texture(VALUE self, VALUE texturePath)
94
+ {
95
+ SUMaterialRef material = {DATA_PTR(self)};
96
+ if (rb_type(texturePath) == T_NIL)
97
+ {
98
+ SUMaterialSetType(material, 0);
99
+ return Qnil;
100
+ }
101
+ else if (rb_type(texturePath) == T_STRING)
102
+ {
103
+ SUTextureRef suTexture = SU_INVALID;
104
+ SUTextureCreateFromFile(&suTexture, StringValuePtr(texturePath), 1.0, 1.0);
105
+ SUMaterialSetTexture(material, suTexture);
106
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_TEXTURE), 0, 0, suTexture.ptr);
107
+ }
108
+ else
109
+ {
110
+ rb_raise(rb_eArgError, "Texture filename or nil required");
111
+ }
112
+ }
113
+
114
+ static VALUE Sketchup_Material_materialType(VALUE self)
115
+ {
116
+ SUMaterialRef material = {DATA_PTR(self)};
117
+ enum SUMaterialType suMaterialType = SUMaterialType_Colored;
118
+ SUMaterialGetType(material, &suMaterialType);
119
+ return INT2FIX(suMaterialType);
120
+ }
121
+
122
+ static VALUE Sketchup_Material_Get_color(VALUE self)
123
+ {
124
+ SUMaterialRef material = {DATA_PTR(self)};
125
+ VALUE color = rb_obj_alloc(rb_path2class(SKETCHUP_COLOR));
126
+ SUMaterialGetColor(material, DATA_PTR(color));
127
+ return color;
128
+ }
129
+
130
+ static VALUE Sketchup_Material_Set_color(VALUE self, VALUE color)
131
+ {
132
+ SUMaterialRef material = {DATA_PTR(self)};
133
+ VALUE valueColor = VALUE2COLOR(color);
134
+ return color;
135
+ }
136
+
137
+ static VALUE Sketchup_Material_Name_equ(VALUE self, VALUE other)
138
+ {
139
+ if (!rb_obj_is_kind_of(other, rb_path2class(SKETCHUP_MATERIAL)))
140
+ rb_raise(rb_eStandardError, "Wrong type of object given");
141
+ #pragma clang diagnostic push
142
+ #pragma clang diagnostic ignored "-Wcompound-token-split-by-macro"
143
+ return rb_funcall(Sketchup_Material_Get_name(self), rb_intern("<=>"), 1, Sketchup_Material_Get_name(other));
144
+ #pragma clang diagnostic pop
145
+ }
146
+
147
+ static VALUE Sketchup_Material_Get_alpha(VALUE self)
148
+ {
149
+ SUMaterialRef material = {DATA_PTR(self)};
150
+ double alpha = 0.0;
151
+ SUMaterialGetOpacity(material, &alpha);
152
+ return DBL2NUM(alpha);
153
+ }
154
+
155
+ static VALUE Sketchup_Material_Set_alpha(VALUE self, VALUE alpha)
156
+ {
157
+ SUMaterialRef material = {DATA_PTR(self)};
158
+ SUMaterialSetOpacity(material, GETALPHA(alpha));
159
+ return alpha;
160
+ }
161
+
162
+ static VALUE Sketchup_Material_Use_alpha(VALUE self)
163
+ {
164
+ SUMaterialRef material = {DATA_PTR(self)};
165
+ bool transparency = false;
166
+ SUMaterialIsDrawnTransparent(material, &transparency);
167
+ return transparency ? Qtrue : Qfalse;
168
+ }
169
+
170
+ static VALUE Sketchup_Material_Get_colorize_type(VALUE self)
171
+ {
172
+ SUMaterialRef material = {DATA_PTR(self)};
173
+ enum SUMaterialColorizeType type = SU_INVALID;
174
+ SUMaterialGetColorizeType(material, &type);
175
+ return INT2FIX(type);
176
+ }
177
+
178
+ static VALUE Sketchup_Material_Set_colorize_type(VALUE self, VALUE type)
179
+ {
180
+ SUMaterialRef material = {DATA_PTR(self)};
181
+ SUMaterialSetColorizeType(material, VALUE2COLORIZATION(type));
182
+ return type;
183
+ }
184
+
185
+ static VALUE Sketchup_Material_owner_type(VALUE self)
186
+ {
187
+ SUMaterialRef material = {DATA_PTR(self)};
188
+ enum SUMaterialOwnerType type = SUMaterialOwnerType_DrawingElement;
189
+ SUMaterialGetOwnerType(material, &type);
190
+ return INT2FIX(type - 1);
191
+ }
192
+
193
+ static VALUE Sketchup_Material_colorize_deltas(VALUE self)
194
+ {
195
+ SUMaterialRef material = {DATA_PTR(self)};
196
+ double hue = 0.0;
197
+ double saturation = 0.0;
198
+ double lightness = 0.0;
199
+ SUMaterialGetColorizeDeltas(material, &hue, &saturation, &lightness);
200
+ VALUE ary = rb_ary_new2(3);
201
+ rb_ary_push(ary, DBL2NUM(hue));
202
+ rb_ary_push(ary, DBL2NUM(lightness));
203
+ rb_ary_push(ary, DBL2NUM(saturation));
204
+ return ary;
205
+ }
206
+
207
+ static VALUE Sketchup_Material_save_as(VALUE self, VALUE path)
208
+ {
209
+ SUMaterialRef material = {DATA_PTR(self)};
210
+ SUMaterialWriteToFile(material, StringValuePtr(path));
211
+ return Qtrue;
212
+ }
213
+
214
+ static VALUE Sketchup_Material_display_name(VALUE self)
215
+ {
216
+ SUMaterialRef material = {DATA_PTR(self)};
217
+ VALUE output;
218
+ GETSTRING(SUMaterialGetNameLegacyBehavior, material, output);
219
+ return output;
220
+ }
221
+
222
+ void Material_Init(VALUE Sketchup, VALUE Sketchup_Entity)
223
+ {
224
+ VALUE Sketchup_Material = rb_define_class_under(Sketchup, MATERIAL, Sketchup_Entity);
225
+ rb_define_method(Sketchup_Material, "name", Sketchup_Material_Get_name, 0);
226
+ rb_define_method(Sketchup_Material, "name=", Sketchup_Material_Set_name, 1);
227
+ rb_define_method(Sketchup_Material, "texture", Sketchup_Material_Get_texture, 0);
228
+ rb_define_method(Sketchup_Material, "texture=", Sketchup_Material_Set_texture, 1);
229
+ rb_define_method(Sketchup_Material, "materialType", Sketchup_Material_materialType, 0);
230
+ rb_define_method(Sketchup_Material, "color", Sketchup_Material_Get_color, 0);
231
+ rb_define_method(Sketchup_Material, "color=", Sketchup_Material_Set_color, 1);
232
+ rb_define_method(Sketchup_Material, "<=>", Sketchup_Material_Name_equ, 1);
233
+ rb_define_method(Sketchup_Material, "alpha", Sketchup_Material_Get_alpha, 0);
234
+ rb_define_method(Sketchup_Material, "alpha=", Sketchup_Material_Set_alpha, 1);
235
+ rb_define_method(Sketchup_Material, "use_alpha?", Sketchup_Material_Use_alpha, 0);
236
+ rb_define_method(Sketchup_Material, "colorize_type", Sketchup_Material_Get_colorize_type, 0);
237
+ rb_define_method(Sketchup_Material, "colorize_type=", Sketchup_Material_Set_colorize_type, 1);
238
+ rb_define_method(Sketchup_Material, "owner_type", Sketchup_Material_owner_type, 0);
239
+ rb_define_method(Sketchup_Material, "colorize_deltas", Sketchup_Material_colorize_deltas, 0);
240
+ rb_define_method(Sketchup_Material, "save_as", Sketchup_Material_save_as, 1);
241
+ rb_define_method(Sketchup_Material, "display_name", Sketchup_Material_display_name, 0);
242
+ }
data/ext/material.h ADDED
@@ -0,0 +1,3 @@
1
+ #include <ruby.h>
2
+
3
+ void Material_Init(VALUE namespace_object, VALUE parent_class);
data/ext/materials.c ADDED
@@ -0,0 +1,80 @@
1
+ #include <stdbool.h>
2
+ #include <materials.h>
3
+ #include <SketchUpAPI/sketchup.h>
4
+ #include <utils.h>
5
+
6
+ void Sketchup_Materials_Iterator(SUMaterialRef material, void* _)
7
+ {
8
+ rb_yield(Data_Wrap_Struct(rb_path2class(SKETCHUP_MATERIAL), 0, 0, material.ptr));
9
+ }
10
+
11
+ static VALUE Sketchup_Materials_each(VALUE self)
12
+ {
13
+ if (rb_block_given_p())
14
+ {
15
+ SUModelRef model = {DATA_PTR(self)};
16
+ FOREACH(SUModelGetNumMaterials, SUModelGetMaterials, SUMaterialRef, model, Sketchup_Materials_Iterator, 0);
17
+ }
18
+ return self;
19
+ }
20
+
21
+ struct MaterialStringIterationContext
22
+ {
23
+ VALUE key;
24
+ SUMaterialRef material;
25
+ };
26
+
27
+ void Sketchup_Materials_Get_By_String_Iterator(SUMaterialRef material, struct MaterialStringIterationContext* material_struct)
28
+ {
29
+ VALUE output;
30
+ GETSTRING(SUMaterialGetName, material, output);
31
+ if (strcmp(StringValuePtr(output), StringValuePtr(material_struct->key)) == 0)
32
+ material_struct->material = material;
33
+ }
34
+
35
+ struct MaterialIndexIterationContext
36
+ {
37
+ int targetIndex;
38
+ int currentIndex;
39
+ SUMaterialRef material;
40
+ };
41
+
42
+ void Sketchup_Materials_Get_By_Index_Iterator(SUMaterialRef material, struct MaterialIndexIterationContext* material_struct)
43
+ {
44
+ if (material_struct->targetIndex == material_struct->currentIndex)
45
+ material_struct->material = material;
46
+ material_struct->currentIndex += 1;
47
+ }
48
+
49
+ static VALUE Sketchup_Materials_get(VALUE self, VALUE key)
50
+ {
51
+ SUModelRef model = {DATA_PTR(self)};
52
+ if (rb_type(key) == T_STRING)
53
+ {
54
+ struct MaterialStringIterationContext material_struct = {key, SU_INVALID};
55
+ FOREACH(SUModelGetNumMaterials, SUModelGetMaterials, SUMaterialRef, model, Sketchup_Materials_Get_By_String_Iterator, &material_struct);
56
+ if (SUIsInvalid(material_struct.material))
57
+ return Qnil;
58
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_MATERIAL), 0, 0, material_struct.material.ptr);
59
+ }
60
+ else
61
+ {
62
+ struct MaterialIndexIterationContext material_struct = {NUM2INT(key), 0, SU_INVALID};
63
+ FOREACH(SUModelGetNumMaterials, SUModelGetMaterials, SUMaterialRef, model, Sketchup_Materials_Get_By_Index_Iterator, &material_struct);
64
+ if (SUIsInvalid(material_struct.material))
65
+ {
66
+ if (material_struct.targetIndex >= material_struct.currentIndex)
67
+ rb_raise(rb_eIndexError, "index %d out of range [0, %d)", material_struct.targetIndex, material_struct.currentIndex);
68
+ }
69
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_MATERIAL), 0, 0, material_struct.material.ptr);
70
+ }
71
+ }
72
+
73
+ VALUE Materials_Init(VALUE Sketchup, VALUE Sketchup_Entity)
74
+ {
75
+ VALUE Sketchup_Materials = rb_define_class_under(Sketchup, MATERIALS, Sketchup_Entity);
76
+ rb_include_module(Sketchup_Materials, rb_mEnumerable);
77
+ rb_define_method(Sketchup_Materials, "each", Sketchup_Materials_each, 0);
78
+ rb_define_method(Sketchup_Materials, "[]", Sketchup_Materials_get, 1);
79
+ return Sketchup_Materials;
80
+ }
data/ext/materials.h ADDED
@@ -0,0 +1,3 @@
1
+ #include <ruby.h>
2
+
3
+ VALUE Materials_Init(VALUE namespace_object, VALUE parent_class);
data/ext/model.c ADDED
@@ -0,0 +1,42 @@
1
+ #include <stdbool.h>
2
+ #include <model.h>
3
+ #include <utils.h>
4
+ #include <SketchUpAPI/sketchup.h>
5
+ #include <sketchup.h>
6
+
7
+ static VALUE Sketchup_Model_close(VALUE self)
8
+ {
9
+ SUModelRef model = Sketchup_get_active_model();
10
+ enum SUResult result = SUModelRelease(&model);
11
+ Sketchup_set_active_model(model);
12
+ if(result != SU_ERROR_NONE)
13
+ return false;
14
+ return Qnil;
15
+ }
16
+
17
+ static VALUE Sketchup_Model_materials(VALUE self)
18
+ {
19
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_MATERIALS), 0, 0, DATA_PTR(self));
20
+ }
21
+
22
+ static VALUE Sketchup_Model_definitions(VALUE self)
23
+ {
24
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_DEFINITIONLIST), 0, 0, DATA_PTR(self));
25
+ }
26
+
27
+ static VALUE Sketchup_Model_attribute_dictionaries(VALUE self)
28
+ {
29
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_ATTRIBUTEDICTIONARIES), 0, 0, DATA_PTR(self));
30
+ }
31
+
32
+ VALUE Model_Init(VALUE Sketchup, VALUE rb_cObject)
33
+ {
34
+ VALUE Sketchup_Model = rb_define_class_under(Sketchup, MODEL, rb_cObject);
35
+ rb_define_const(Sketchup_Model, "LOAD_STATUS_SUCCESS", INT2FIX(0));
36
+ rb_define_const(Sketchup_Model, "LOAD_STATUS_SUCCESS_MORE_RECENT", INT2FIX(1));
37
+ rb_define_method(Sketchup_Model, "close", Sketchup_Model_close, 0);
38
+ rb_define_method(Sketchup_Model, "materials", Sketchup_Model_materials, 0);
39
+ rb_define_method(Sketchup_Model, "definitions", Sketchup_Model_definitions, 0);
40
+ rb_define_method(Sketchup_Model, "attribute_dictionaries", Sketchup_Model_attribute_dictionaries, 0);
41
+ return Sketchup_Model;
42
+ }
data/ext/model.h ADDED
@@ -0,0 +1,3 @@
1
+ #include <ruby.h>
2
+
3
+ VALUE Model_Init(VALUE namespace_object, VALUE parent_class);
data/ext/sketchup.c ADDED
@@ -0,0 +1,89 @@
1
+ #include <ruby.h>
2
+ #include <stdbool.h>
3
+ #include <sketchup.h>
4
+ #include <entity.h>
5
+ #include <entities.h>
6
+ #include <model.h>
7
+ #include <material.h>
8
+ #include <materials.h>
9
+ #include <texture.h>
10
+ #include <color.h>
11
+ #include <attribute_dictionary.h>
12
+ #include <attribute_dictionaries.h>
13
+ #include <component_definition.h>
14
+ #include <component_instance.h>
15
+ #include <definition_list.h>
16
+ #include <drawing_element.h>
17
+ #include <behavior.h>
18
+ #include <utils.h>
19
+
20
+ SUModelRef active_model = SU_INVALID;
21
+
22
+ SUModelRef Sketchup_get_active_model()
23
+ {
24
+ return active_model;
25
+ }
26
+ void Sketchup_set_active_model(SUModelRef model)
27
+ {
28
+ active_model = model;
29
+ }
30
+
31
+ static VALUE Sketchup_open_file(int argc, VALUE *argv, VALUE self)
32
+ {
33
+ VALUE path;
34
+ VALUE kwarg_hash;
35
+ rb_scan_args(argc, argv, "1:", &path, &kwarg_hash);
36
+
37
+ const VALUE kwarg_ids[1] = {
38
+ rb_intern_const("with_status")
39
+ };
40
+ VALUE kwargs[1];
41
+ rb_get_kwargs(kwarg_hash, kwarg_ids, 0, 1, kwargs);
42
+ bool with_status = true;
43
+ if (RDEF(kwargs[0]))
44
+ with_status = RTEST(kwargs[0]);
45
+
46
+ enum SUModelLoadStatus status;
47
+ SUModelRef model = SU_INVALID;
48
+ enum SUResult result = SUModelCreateFromFileWithStatus(&model, StringValuePtr(path), &status);
49
+ if (result != SU_ERROR_NONE)
50
+ return false;
51
+
52
+ Sketchup_set_active_model(model);
53
+ if (with_status)
54
+ return INT2FIX(status);
55
+ else
56
+ return Qtrue;
57
+ }
58
+
59
+ static VALUE Sketchup_active_model(VALUE self)
60
+ {
61
+ if (SUIsValid(active_model))
62
+ return Data_Wrap_Struct(rb_path2class(SKETCHUP_MODEL), 0, 0, active_model.ptr);
63
+ else
64
+ return Qnil;
65
+ }
66
+
67
+ void Init_sketchup() {
68
+ SUInitialize();
69
+ VALUE Sketchup = rb_define_module(SKETCHUP);
70
+ rb_define_singleton_method(Sketchup, "open_file", Sketchup_open_file, -1);
71
+ rb_define_singleton_method(Sketchup, "active_model", Sketchup_active_model, 0);
72
+
73
+ Model_Init(Sketchup, rb_cObject);
74
+ Color_Init(Sketchup, rb_cObject);
75
+
76
+ VALUE Sketchup_Entities = Entities_Init(Sketchup, rb_cObject);
77
+ VALUE Sketchup_Entity = Entity_Init(Sketchup, rb_cObject);
78
+ Materials_Init(Sketchup, Sketchup_Entity);
79
+ Material_Init(Sketchup, Sketchup_Entity);
80
+ DefinitionList_Init(Sketchup, Sketchup_Entity);
81
+ AttributeDictionary_Init(Sketchup, Sketchup_Entity);
82
+ AttributeDictionaries_Init(Sketchup, Sketchup_Entity);
83
+ Texture_Init(Sketchup, Sketchup_Entity);
84
+ Behavior_Init(Sketchup, Sketchup_Entity);
85
+
86
+ VALUE Sketchup_DrawingElement = DrawingElement_Init(Sketchup, Sketchup_Entity);
87
+ ComponentInstance_Init(Sketchup, Sketchup_DrawingElement);
88
+ ComponentDefinition_Init(Sketchup, Sketchup_DrawingElement);
89
+ }
data/ext/sketchup.h ADDED
@@ -0,0 +1,4 @@
1
+ #include <SketchUpAPI/sketchup.h>
2
+
3
+ SUModelRef Sketchup_get_active_model();
4
+ void Sketchup_set_active_model(SUModelRef model);
data/ext/texture.c ADDED
@@ -0,0 +1,9 @@
1
+ #include <stdbool.h>
2
+ #include <texture.h>
3
+ #include <SketchUpAPI/sketchup.h>
4
+ #include <utils.h>
5
+
6
+ void Texture_Init(VALUE Sketchup, VALUE Sketchup_Entity)
7
+ {
8
+ VALUE Sketchup_Texture = rb_define_class_under(Sketchup, TEXTURE, Sketchup_Entity);
9
+ }
data/ext/texture.h ADDED
@@ -0,0 +1,3 @@
1
+ #include <ruby.h>
2
+
3
+ void Texture_Init(VALUE namespace_object, VALUE parent_class);
data/ext/typed_value.c ADDED
@@ -0,0 +1,84 @@
1
+ #include <stdbool.h>
2
+ #include <typed_value.h>
3
+ #include <utils.h>
4
+
5
+ VALUE TypedValue_get_value_type(SUTypedValueRef* typedValue)
6
+ {
7
+ enum SUTypedValueType type = SUTypedValueType_Empty;
8
+ enum SUResult result = SUTypedValueGetType(*typedValue, &type);
9
+ if(result != SU_ERROR_NONE)
10
+ return Qnil;
11
+ switch (type)
12
+ {
13
+ case SUTypedValueType_Empty:
14
+ {
15
+ return Qnil;
16
+ }
17
+ case SUTypedValueType_Byte:
18
+ {
19
+ return Qnil;
20
+ }
21
+ case SUTypedValueType_Short:
22
+ {
23
+ int16_t value;
24
+ SUTypedValueGetInt16(*typedValue, &value);
25
+ return INT2FIX(value);
26
+ }
27
+ case SUTypedValueType_Int32:
28
+ {
29
+ int32_t value;
30
+ SUTypedValueGetInt32(*typedValue, &value);
31
+ return INT2NUM(value);
32
+ }
33
+ case SUTypedValueType_Float:
34
+ {
35
+ float value;
36
+ SUTypedValueGetFloat(*typedValue, &value);
37
+ return DBL2NUM(value);
38
+ }
39
+ case SUTypedValueType_Double:
40
+ {
41
+ double value;
42
+ SUTypedValueGetDouble(*typedValue, &value);
43
+ return DBL2NUM(value);
44
+ }
45
+ case SUTypedValueType_Bool:
46
+ {
47
+ bool value;
48
+ SUTypedValueGetBool(*typedValue, &value);
49
+ return value ? Qtrue : Qfalse;
50
+ }
51
+ case SUTypedValueType_String:
52
+ {
53
+ VALUE output;
54
+ GETSTRING(SUTypedValueGetString, *typedValue, output);
55
+ return output;
56
+ }
57
+ case SUTypedValueType_Color:
58
+ case SUTypedValueType_Time:
59
+ case SUTypedValueType_Vector3D:
60
+ case SUTypedValueType_Array:
61
+ {
62
+ rb_raise(rb_eStandardError, "unimplemented");
63
+ }
64
+ }
65
+ }
66
+
67
+ VALUE TypedValue_set_value_type(SUTypedValueRef* typedValue, VALUE value)
68
+ {
69
+ VALUE type = rb_type(value);
70
+ switch (type)
71
+ {
72
+ case RUBY_T_FLOAT:
73
+ {
74
+ SUTypedValueSetFloat(*typedValue, NUM2DBL(value));
75
+ break;
76
+ }
77
+ case RUBY_T_STRING:
78
+ {
79
+ SUTypedValueSetString(*typedValue, StringValuePtr(value));
80
+ break;
81
+ }
82
+ }
83
+ return value;
84
+ }
data/ext/typed_value.h ADDED
@@ -0,0 +1,5 @@
1
+ #include <ruby.h>
2
+ #include <SketchUpAPI/sketchup.h>
3
+
4
+ VALUE TypedValue_get_value_type(SUTypedValueRef* typedValue);
5
+ VALUE TypedValue_set_value_type(SUTypedValueRef* typedValue, VALUE value);
data/ext/utils.h ADDED
@@ -0,0 +1,80 @@
1
+ #include <ruby.h>
2
+
3
+ #ifndef UTILS_H
4
+ #define SKETCHUP "Sketchup"
5
+ #define MODEL "Model"
6
+ #define MATERIAL "Material"
7
+ #define MATERIALS "Materials"
8
+ #define TEXTURE "Texture"
9
+ #define ENTITY "Entity"
10
+ #define ENTITIES "Entities"
11
+ #define COLOR "Color"
12
+ #define COMPONENTDEFINITION "ComponentDefinition"
13
+ #define COMPONENTINSTANCE "ComponentInstance"
14
+ #define DEFINITIONLIST "DefinitionList"
15
+ #define ATTRIBUTEDICTIONARY "AttributeDictionary"
16
+ #define ATTRIBUTEDICTIONARIES "AttributeDictionaries"
17
+ #define DRAWINGELEMENT "DrawingElement"
18
+ #define BEHAVIOR "Behavior"
19
+ #define SKETCHUP_MATERIAL SKETCHUP "::" MATERIAL
20
+ #define SKETCHUP_MATERIALS SKETCHUP "::" MATERIALS
21
+ #define SKETCHUP_TEXTURE SKETCHUP "::" TEXTURE
22
+ #define SKETCHUP_ENTITIES SKETCHUP "::" ENTITIES
23
+ #define SKETCHUP_COLOR SKETCHUP "::" COLOR
24
+ #define SKETCHUP_COMPONENTDEFINITION SKETCHUP "::" COMPONENTDEFINITION
25
+ #define SKETCHUP_COMPONENTINSTANCE SKETCHUP "::" COMPONENTINSTANCE
26
+ #define SKETCHUP_MODEL SKETCHUP "::" MODEL
27
+ #define SKETCHUP_ATTRIBUTEDICTIONARY SKETCHUP "::" ATTRIBUTEDICTIONARY
28
+ #define SKETCHUP_ATTRIBUTEDICTIONARIES SKETCHUP "::" ATTRIBUTEDICTIONARIES
29
+ #define SKETCHUP_DEFINITIONLIST SKETCHUP "::" DEFINITIONLIST
30
+ #define SKETCHUP_BEHAVIOR SKETCHUP "::" BEHAVIOR
31
+
32
+ #pragma clang diagnostic push
33
+ #pragma clang diagnostic ignored "-Wbackslash-newline-escape"
34
+
35
+ #define RDEF(arg) (arg != Qundef)
36
+
37
+ #define FOREACH(SUGetNum, SUGet, SURef, ref, callback, userdata) {\
38
+ size_t num; \
39
+ SUGetNum(ref, &num); \
40
+ SURef* array = malloc(num * sizeof(SURef)); \
41
+ SUGet(ref, num, array, &num); \
42
+ for( int i = 0; i < num; i++) \
43
+ callback(array[i], userdata); \
44
+ free(array); \
45
+ }
46
+
47
+ #define FOREACHSTRING(SUGetNum, SUGet, SURef, ref, callback, userdata) {\
48
+ size_t num; \
49
+ SUGetNum(ref, &num); \
50
+ SURef* array = malloc(num * sizeof(SURef)); \
51
+ for (int i = 0; i < num; i++) \
52
+ { \
53
+ array[i].ptr = 0; \
54
+ SUStringCreate(&array[i]); \
55
+ } \
56
+ SUGet(ref, num, array, &num); \
57
+ for (int i = 0; i < num; i++) \
58
+ callback(array[i], userdata); \
59
+ for (int i = 0; i < num; i++) \
60
+ SUStringRelease(&array[i]); \
61
+ free(array); \
62
+ }
63
+
64
+ #define GETUTF8FROMSTRING(suString, output) { \
65
+ size_t count; \
66
+ SUStringGetUTF8Length(suString, &count); \
67
+ output = rb_utf8_str_new(0, count); \
68
+ SUStringGetUTF8(suString, count + 1, RSTRING_PTR(output), &count); \
69
+ }
70
+
71
+ #define GETSTRING(SUName, arg, output) { \
72
+ SUStringRef name = SU_INVALID; \
73
+ SUStringCreate(&name); \
74
+ SUName(arg, &name); \
75
+ GETUTF8FROMSTRING(name, output); \
76
+ SUStringRelease(&name); \
77
+ }
78
+ #endif // UTILS_H
79
+
80
+ #pragma clang diagnostic pop
data/lib/sketchup.rb ADDED
@@ -0,0 +1,12 @@
1
+ case RUBY_PLATFORM
2
+ when /darwin/
3
+ require "#{__dir__}/sketchup.bundle"
4
+ when /linux/
5
+ raise "Unsupported platform for SketchUpAPI"
6
+ else # assuming windows
7
+ require 'fiddle'
8
+ Fiddle.dlopen("#{__dir__}/../sketchup-sdk-win/binaries/sketchup/x64/SketchUpCommonPreferences.dll")
9
+ Fiddle.dlopen("#{__dir__}/../sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.dll")
10
+ require "#{__dir__}/sketchup.so"
11
+ end
12
+