mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| %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
 | |
|     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
 | |
| 
 | |
| %}
 | |
| 
 | 
