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.
- checksums.yaml +7 -0
- data/LICENSE.txt +11 -0
- data/README.md +5 -0
- data/ext/attribute_dictionaries.c +45 -0
- data/ext/attribute_dictionaries.h +3 -0
- data/ext/attribute_dictionary.c +156 -0
- data/ext/attribute_dictionary.h +3 -0
- data/ext/behavior.c +10 -0
- data/ext/behavior.h +3 -0
- data/ext/color.c +211 -0
- data/ext/color.h +3 -0
- data/ext/component_definition.c +188 -0
- data/ext/component_definition.h +3 -0
- data/ext/component_instance.c +10 -0
- data/ext/component_instance.h +3 -0
- data/ext/definition_list.c +145 -0
- data/ext/definition_list.h +3 -0
- data/ext/drawing_element.c +10 -0
- data/ext/drawing_element.h +3 -0
- data/ext/entities.c +11 -0
- data/ext/entities.h +3 -0
- data/ext/entity.c +253 -0
- data/ext/entity.h +3 -0
- data/ext/extconf.rb +38 -0
- data/ext/material.c +242 -0
- data/ext/material.h +3 -0
- data/ext/materials.c +80 -0
- data/ext/materials.h +3 -0
- data/ext/model.c +42 -0
- data/ext/model.h +3 -0
- data/ext/sketchup.c +89 -0
- data/ext/sketchup.h +4 -0
- data/ext/texture.c +9 -0
- data/ext/texture.h +3 -0
- data/ext/typed_value.c +84 -0
- data/ext/typed_value.h +5 -0
- data/ext/utils.h +80 -0
- data/lib/sketchup.rb +12 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/application.h +36 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/model.h +59 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/overlay.h +248 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/application/ruby_api.h +118 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/color.h +107 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/common.h +178 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/defs.h +19 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/extension_license.h +62 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/bounding_box.h +34 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/plane3d.h +153 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point2d.h +96 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/point3d.h +98 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/ray3d.h +64 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/transformation.h +321 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/transformation2d.h +163 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector2d.h +235 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry/vector3d.h +285 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/geometry.h +152 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/modelexporterplugin.h +165 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/modelimporterplugin.h +183 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/import_export/pluginprogresscallback.h +84 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/initialize.h +43 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/length_formatter.h +424 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/arccurve.h +244 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/arrow_type.h +17 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/attribute_dictionary.h +161 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/axes.h +242 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/camera.h +398 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classification_attribute.h +89 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classification_info.h +125 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/classifications.h +86 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_definition.h +588 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/component_instance.h +344 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/curve.h +143 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/defs.h +142 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension.h +222 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_linear.h +421 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_radial.h +194 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dimension_style.h +253 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/drawing_element.h +198 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dynamic_component_attribute.h +92 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/dynamic_component_info.h +70 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/edge.h +271 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/edge_use.h +214 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entities.h +834 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity.h +186 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity_list.h +80 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/entity_list_iterator.h +90 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/face.h +686 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/font.h +138 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/geometry.h +20 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/geometry_input.h +685 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/group.h +244 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/guide_line.h +155 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/guide_point.h +153 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/image.h +288 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/image_rep.h +275 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/instancepath.h +266 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/layer.h +265 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/layer_folder.h +301 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/line_style.h +211 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/line_styles.h +81 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/location.h +65 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/loop.h +182 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/material.h +390 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/mesh_helper.h +187 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model.h +1663 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/model_version.h +49 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/opening.h +72 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/options_manager.h +79 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/options_provider.h +166 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/polyline3d.h +140 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/rendering_options.h +179 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/scene.h +836 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/schema.h +56 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/schema_type.h +26 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/section_plane.h +212 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/selection.h +156 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/shadow_info.h +147 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/skp.h +45 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/style.h +303 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/styles.h +190 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/text.h +384 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/texture.h +358 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/texture_writer.h +280 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/typed_value.h +390 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/uv_helper.h +79 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/model/vertex.h +154 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/sketchup.h +122 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/sketchup_info.h +65 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/slapi.h +16 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/transformation.h +16 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/unicodestring.h +239 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Headers/utils/math_helpers.h +124 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonGeometry.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonGeoutils.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonImage.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonPreferences.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUnits.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonUtils.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Libraries/libCommonZip.dylib +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/Resources/Info.plist +50 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/SketchUpAPI +0 -0
- data/sketchup-sdk-mac/SketchUpAPI.framework/Versions/A/_CodeSignature/CodeResources +835 -0
- data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.dll +0 -0
- data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpAPI.lib +0 -0
- data/sketchup-sdk-win/binaries/sketchup/x64/SketchUpCommonPreferences.dll +0 -0
- data/sketchup-sdk-win/binaries/sketchup/x64/sketchup.lib +0 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/application/application.h +36 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/application/model.h +59 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/application/overlay.h +248 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/application/ruby_api.h +118 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/color.h +107 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/common.h +178 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/defs.h +19 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/extension_license.h +62 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/bounding_box.h +34 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/plane3d.h +153 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point2d.h +96 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/point3d.h +98 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/ray3d.h +64 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/transformation.h +321 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/transformation2d.h +163 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector2d.h +235 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry/vector3d.h +285 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/geometry.h +152 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/import_export/modelexporterplugin.h +165 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/import_export/modelimporterplugin.h +183 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/import_export/pluginprogresscallback.h +84 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/initialize.h +43 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/length_formatter.h +424 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/arccurve.h +244 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/arrow_type.h +17 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/attribute_dictionary.h +161 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/axes.h +242 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/camera.h +398 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/classification_attribute.h +89 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/classification_info.h +125 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/classifications.h +86 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/component_definition.h +588 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/component_instance.h +344 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/curve.h +143 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/defs.h +142 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension.h +222 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_linear.h +421 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_radial.h +194 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dimension_style.h +253 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/drawing_element.h +198 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dynamic_component_attribute.h +92 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/dynamic_component_info.h +70 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/edge.h +271 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/edge_use.h +214 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/entities.h +834 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/entity.h +186 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/entity_list.h +80 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/entity_list_iterator.h +90 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/face.h +686 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/font.h +138 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/geometry.h +20 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/geometry_input.h +685 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/group.h +244 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/guide_line.h +155 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/guide_point.h +153 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/image.h +288 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/image_rep.h +275 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/instancepath.h +266 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/layer.h +265 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/layer_folder.h +301 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/line_style.h +211 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/line_styles.h +81 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/location.h +65 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/loop.h +182 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/material.h +390 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/mesh_helper.h +187 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/model.h +1663 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/model_version.h +49 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/opening.h +72 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/options_manager.h +79 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/options_provider.h +166 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/polyline3d.h +140 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/rendering_options.h +179 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/scene.h +836 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/schema.h +56 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/schema_type.h +26 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/section_plane.h +212 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/selection.h +156 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/shadow_info.h +147 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/skp.h +45 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/style.h +303 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/styles.h +190 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/text.h +384 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/texture.h +358 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/texture_writer.h +280 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/typed_value.h +390 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/uv_helper.h +79 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/model/vertex.h +154 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/sketchup.h +122 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/sketchup_info.h +65 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/slapi.h +16 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/transformation.h +16 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/unicodestring.h +239 -0
- data/sketchup-sdk-win/headers/SketchUpAPI/utils/math_helpers.h +124 -0
- 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
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
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
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
data/ext/texture.c
ADDED
data/ext/texture.h
ADDED
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
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
|
+
|