mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
%module{Slic3r::XS};
 | 
						|
 | 
						|
%{
 | 
						|
#include <myinit.h>
 | 
						|
#include "Point.hpp"
 | 
						|
%}
 | 
						|
 | 
						|
%name{Slic3r::Point} class Point {
 | 
						|
    Point(long _x = 0, long _y = 0);
 | 
						|
    ~Point();
 | 
						|
    Clone<Point> clone()
 | 
						|
        %code{% RETVAL=THIS; %}; 
 | 
						|
    void scale(double factor);
 | 
						|
    void translate(double x, double y);
 | 
						|
    SV* arrayref()
 | 
						|
        %code{% RETVAL = THIS->to_SV_pureperl(); %};
 | 
						|
    SV* pp()
 | 
						|
        %code{% RETVAL = THIS->to_SV_pureperl(); %};
 | 
						|
    long x()
 | 
						|
        %code{% RETVAL = THIS->x; %};
 | 
						|
    long y()
 | 
						|
        %code{% RETVAL = THIS->y; %};
 | 
						|
    int nearest_point_index(Points points);
 | 
						|
    Point* nearest_point(Points points)
 | 
						|
        %code{% RETVAL = new Point(); THIS->nearest_point(points, RETVAL); %};
 | 
						|
    double distance_to(Point* point)
 | 
						|
        %code{% RETVAL = THIS->distance_to(*point); %};
 | 
						|
    double distance_to_line(Line* line)
 | 
						|
        %code{% RETVAL = THIS->distance_to(*line); %};
 | 
						|
    double ccw(Point* p1, Point* p2)
 | 
						|
        %code{% RETVAL = THIS->ccw(*p1, *p2); %};
 | 
						|
    Clone<Point> projection_onto_polygon(Polygon* polygon)
 | 
						|
        %code{% RETVAL = new Point(THIS->projection_onto(*polygon)); %};
 | 
						|
    Clone<Point> projection_onto_polyline(Polyline* polyline)
 | 
						|
        %code{% RETVAL = new Point(THIS->projection_onto(*polyline)); %};
 | 
						|
    Clone<Point> projection_onto_line(Line* line)
 | 
						|
        %code{% RETVAL = new Point(THIS->projection_onto(*line)); %};
 | 
						|
 | 
						|
%{
 | 
						|
 | 
						|
void
 | 
						|
Point::rotate(angle, center_sv)
 | 
						|
    double  angle;
 | 
						|
    SV*     center_sv;
 | 
						|
    CODE:
 | 
						|
        Point center;
 | 
						|
        center.from_SV_check(center_sv);
 | 
						|
        THIS->rotate(angle, center);
 | 
						|
 | 
						|
bool
 | 
						|
Point::coincides_with(point_sv)
 | 
						|
    SV*     point_sv;
 | 
						|
    CODE:
 | 
						|
        Point point;
 | 
						|
        point.from_SV_check(point_sv);
 | 
						|
        RETVAL = THIS->coincides_with(point);
 | 
						|
    OUTPUT:
 | 
						|
        RETVAL
 | 
						|
 | 
						|
%}
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
%name{Slic3r::Pointf} class Pointf {
 | 
						|
    Pointf(double _x = 0, double _y = 0);
 | 
						|
    ~Pointf();
 | 
						|
    Clone<Pointf> clone()
 | 
						|
        %code{% RETVAL = THIS; %};
 | 
						|
    double x()
 | 
						|
        %code{% RETVAL = THIS->x; %};
 | 
						|
    double y()
 | 
						|
        %code{% RETVAL = THIS->y; %};
 | 
						|
    void translate(double x, double y);
 | 
						|
};
 | 
						|
 | 
						|
%name{Slic3r::Pointf3} class Pointf3 {
 | 
						|
    Pointf3(double _x = 0, double _y = 0, double _z = 0);
 | 
						|
    ~Pointf3();
 | 
						|
    Clone<Pointf3> clone()
 | 
						|
        %code{% RETVAL = THIS; %};
 | 
						|
    double x()
 | 
						|
        %code{% RETVAL = THIS->x; %};
 | 
						|
    double y()
 | 
						|
        %code{% RETVAL = THIS->y; %};
 | 
						|
    double z()
 | 
						|
        %code{% RETVAL = THIS->z; %};
 | 
						|
};
 |