@@ -14,37 +14,36 @@ using namespace libnest2d;
1414using namespace emscripten ;
1515
1616EMSCRIPTEN_BINDINGS (libnest2d_js) {
17- // Expose Point type
18- value_object<Point >(" Point" )
19- .field (" x" , &Point::x )
20- .field (" y" , &Point::y );
21-
22- // Expose Polygon type
23- value_object<Polygon>(" Polygon" )
24- .field (" points " , &Polygon::points);
25-
26- // Expose NesterConfig
27- value_object<NesterConfig>( " NesterConfig " )
28- . field ( " iterations " , &NesterConfig::iterations )
29- .field (" time_limit " , &NesterConfig::time_limit );
30-
31- // Expose Nester class
32- class_<Nester >(" Nester" )
17+ // Expose ClipperLib::IntPoint as Point
18+ value_object<ClipperLib::IntPoint >(" Point" )
19+ .field (" x" , &ClipperLib::IntPoint::X )
20+ .field (" y" , &ClipperLib::IntPoint::Y );
21+
22+ // Expose ClipperLib:: Polygon
23+ value_object<ClipperLib:: Polygon>(" Polygon" )
24+ .field (" contour " , &ClipperLib:: Polygon::Contour)
25+ . field ( " holes " , &ClipperLib::Polygon::Holes);
26+
27+ // Expose NestConfig (template, so use default types )
28+ value_object<NestConfig<>>( " NestConfig " )
29+ .field (" placer_config " , &NestConfig<>::placer_config );
30+
31+ // Expose _Nester (template, so use default types)
32+ class_<_Nester<NfpPlacer, FirstFitSelection> >(" Nester" )
3333 .constructor <>()
34- .function (" nest" , &Nester::nest);
35-
36- // Expose OptimizerConfig
37- value_object<OptimizerConfig>(" OptimizerConfig" )
38- .field (" max_evals" , &OptimizerConfig::max_evals)
39- .field (" tolerance" , &OptimizerConfig::tolerance);
40-
41- // Expose Optimizer class
42- class_<Optimizer>(" Optimizer" )
43- .constructor <>()
44- .function (" optimize" , &Optimizer::optimize);
45-
46- // Expose utility functions (example)
47- function (" polygonArea" , &polygon_area);
34+ .function (" nest" , &_Nester<NfpPlacer, FirstFitSelection>::nest);
35+
36+ // Expose StopCriteria as OptimizerConfig
37+ value_object<opt::StopCriteria>(" OptimizerConfig" )
38+ .field (" max_iterations" , &opt::StopCriteria::max_iterations)
39+ .field (" absolute_score_difference" , &opt::StopCriteria::absolute_score_difference)
40+ .field (" relative_score_difference" , &opt::StopCriteria::relative_score_difference)
41+ .field (" stop_score" , &opt::StopCriteria::stop_score);
42+
43+ // Expose Optimizer (template, so use NloptOptimizer)
44+ class_<opt::Optimizer<opt::NloptOptimizer>>(" Optimizer" )
45+ .constructor <const opt::StopCriteria&>()
46+ .function (" optimize_min" , &opt::Optimizer<opt::NloptOptimizer>::optimize_min<double >);
4847}
4948
5049#endif // LIBNEST2D_JS_H
0 commit comments