123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- %module{Slic3r::XS};
- %{
- #include <xsinit.h>
- #include "libslic3r/Surface.hpp"
- #include "libslic3r/ClipperUtils.hpp"
- %}
- %name{Slic3r::Surface} class Surface {
- ~Surface();
- Ref<ExPolygon> expolygon()
- %code{% RETVAL = &(THIS->expolygon); %};
- double thickness()
- %code{% RETVAL = THIS->thickness; %};
- unsigned short thickness_layers()
- %code{% RETVAL = THIS->thickness_layers; %};
- double area();
- bool is_solid() const;
- bool is_external() const;
- bool is_internal() const;
- bool is_bottom() const;
- bool is_bridge() const;
- %{
- Surface*
- _new(CLASS, expolygon, surface_type, thickness, thickness_layers, bridge_angle, extra_perimeters)
- char* CLASS;
- ExPolygon* expolygon;
- SurfaceType surface_type;
- double thickness;
- unsigned short thickness_layers;
- double bridge_angle;
- unsigned short extra_perimeters;
- CODE:
- RETVAL = new Surface (surface_type, *expolygon);
- RETVAL->thickness = thickness;
- RETVAL->thickness_layers = thickness_layers;
- RETVAL->bridge_angle = bridge_angle;
- RETVAL->extra_perimeters = extra_perimeters;
- // we don't delete expolygon here because it's referenced by a Perl SV
- // whose DESTROY will take care of destruction
- OUTPUT:
- RETVAL
- SurfaceType
- Surface::surface_type(...)
- CODE:
- if (items > 1) {
- THIS->surface_type = (SurfaceType)SvUV(ST(1));
- }
- RETVAL = THIS->surface_type;
- OUTPUT:
- RETVAL
- double
- Surface::bridge_angle(...)
- CODE:
- if (items > 1) {
- THIS->bridge_angle = (double)SvNV(ST(1));
- }
- RETVAL = THIS->bridge_angle;
- OUTPUT:
- RETVAL
- unsigned short
- Surface::extra_perimeters(...)
- CODE:
- if (items > 1) {
- THIS->extra_perimeters = (double)SvUV(ST(1));
- }
- RETVAL = THIS->extra_perimeters;
- OUTPUT:
- RETVAL
- Polygons
- Surface::polygons()
- CODE:
- RETVAL.push_back(THIS->expolygon.contour);
- for (Polygons::iterator it = THIS->expolygon.holes.begin(); it != THIS->expolygon.holes.end(); ++it) {
- RETVAL.push_back((*it));
- }
- OUTPUT:
- RETVAL
- Surfaces
- Surface::offset(delta, joinType = ClipperLib::jtMiter, miterLimit = 3)
- const float delta
- Slic3r::ClipperLib::JoinType joinType
- double miterLimit
- CODE:
- surfaces_append(RETVAL, offset_ex(THIS->expolygon, delta, joinType, miterLimit), *THIS);
- OUTPUT:
- RETVAL
- %}
- };
- %package{Slic3r::Surface};
- %{
- IV
- _constant()
- ALIAS:
- S_TYPE_TOP = stTop
- S_TYPE_BOTTOM = stBottom
- S_TYPE_BOTTOMBRIDGE = stBottomBridge
- S_TYPE_INTERNAL = stInternal
- S_TYPE_INTERNALSOLID = stInternalSolid
- S_TYPE_INTERNALBRIDGE = stInternalBridge
- S_TYPE_INTERNALVOID = stInternalVoid
- S_TYPW_PERIMETER = stPerimeter
- PROTOTYPE:
- CODE:
- RETVAL = ix;
- OUTPUT: RETVAL
- %}
|