@@ -73,7 +73,7 @@ std::vector<double> jsArrayToVectorDouble(const emscripten::val& jsArray) {
7373}
7474
7575// Wrapper function for nest() to handle JavaScript arrays
76- long nestWrapper (emscripten::val jsItems, const Box& bin, long distance = 1 , const NfpConfig& config = NfpConfig()) {
76+ size_t nestWrapper (emscripten::val jsItems, const Box& bin, long distance = 1 , const NfpConfig& config = NfpConfig()) {
7777 // Convert JavaScript array to std::vector<Item>
7878 std::vector<Item> items;
7979 unsigned length = jsItems[" length" ].as <unsigned >();
@@ -93,7 +93,7 @@ long nestWrapper(emscripten::val jsItems, const Box& bin, long distance = 1, con
9393 NestConfig<> nestConfig (config);
9494
9595 // Call the nest function
96- long result = nest (items, bin, distance, nestConfig);
96+ size_t result = nest (items, bin, distance, nestConfig);
9797
9898 // Copy results back to original JavaScript items
9999 for (size_t i = 0 ; i < items.size () && i < length; ++i) {
@@ -123,9 +123,11 @@ EMSCRIPTEN_BINDINGS(libnest2d_js) {
123123 class_<Box>(" Box" )
124124 .constructor <Point>()
125125 .constructor <Point, Point>()
126- .constructor <long , long >()
127126 .constructor <long , long , Point>()
128127 .class_function (" infinite" , &Box::infinite)
128+ .class_function (" fromDimensions" , optional_override ([](long width, long height) -> Box {
129+ return Box (width, height);
130+ }))
129131 .function (" minCorner" , select_overload<const Point&() const >(&Box::minCorner))
130132 .function (" maxCorner" , select_overload<const Point&() const >(&Box::maxCorner))
131133 .function (" width" , &Box::width)
@@ -134,6 +136,17 @@ EMSCRIPTEN_BINDINGS(libnest2d_js) {
134136 .function (" center" , select_overload<Point () const >(&Box::center))
135137 ;
136138
139+ // Circle class
140+ class_<Circle>(" Circle" )
141+ .constructor <>()
142+ .constructor <Point, double >()
143+ .function (" center" , select_overload<const Point&() const >(&Circle::center))
144+ .function (" setCenter" , select_overload<void (const Point&)>(&Circle::center))
145+ .function (" radius" , select_overload<double () const >(&Circle::radius))
146+ .function (" setRadius" , select_overload<void (double )>(&Circle::radius))
147+ .function (" area" , &Circle::area)
148+ ;
149+
137150 // NfpConfig::Alignment enum
138151 enum_<NfpConfig::Alignment>(" Alignment" )
139152 .value (" CENTER" , NfpConfig::Alignment::CENTER)
0 commit comments