From 6abbf81ef2f298e3221ff5e67a1f3c5f23958212 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 14 Dec 2020 13:26:14 +0000 Subject: gentoo resync : 14.12.2020 --- dev-libs/libnest2d/Manifest | 4 + .../files/libnest2d-0.4-add-disallowed-areas.patch | 122 +++++++++++++++++++++ dev-libs/libnest2d/libnest2d-0.4.ebuild | 39 +++++++ dev-libs/libnest2d/metadata.xml | 23 ++++ 4 files changed, 188 insertions(+) create mode 100644 dev-libs/libnest2d/Manifest create mode 100644 dev-libs/libnest2d/files/libnest2d-0.4-add-disallowed-areas.patch create mode 100644 dev-libs/libnest2d/libnest2d-0.4.ebuild create mode 100644 dev-libs/libnest2d/metadata.xml (limited to 'dev-libs/libnest2d') diff --git a/dev-libs/libnest2d/Manifest b/dev-libs/libnest2d/Manifest new file mode 100644 index 000000000000..765bb379e432 --- /dev/null +++ b/dev-libs/libnest2d/Manifest @@ -0,0 +1,4 @@ +AUX libnest2d-0.4-add-disallowed-areas.patch 4671 BLAKE2B 1b57d9a00f9ad5df3d0396d039bcf64570dedb0da939ad60a6eeca199de280a413fa80c4fb6edf976b920634243ce1f8da6a7c00cf08930a6309c4955f48f7e4 SHA512 1915a937b91c1e3d06d4a0b5914d706f84da171cfd2ebf161b0017e67a5a28bbefd80d7a290348735b4143e4b67f421c5d611831af1b89b76371327d74d11508 +DIST libnest2d-0.4.tar.gz 365065 BLAKE2B 74a4aef18be22d24e4e73288dd3e330b2f5baa3b2c705683c22767dfb0394a7b332bad957321f57ec7eaaf4740cff9ca1ed86f9d552be65df1b2af76ceba61e9 SHA512 fadce18986b844eed13a581f84055df909a17407a0980deb6c7c24248a969a537a8840650bcfc673e61973810ce9a008acb599e3b8e00c9bff6b566ca41cd62c +EBUILD libnest2d-0.4.ebuild 886 BLAKE2B 4fa60f8279f4bdbe3291ac835035a7ea577378907cc69db305393bd04515dd935a08cbe6978ab97c184baf63e1355027e1d26a45003687e22c92cefc194a7729 SHA512 6a6687807a9382fb2bfbb59c3535f78615167104f19251514bd008332cb556181b6cfead8cfc91a5dd28fab09f51c8c391ffed3be640a36208267c5be91b39d5 +MISC metadata.xml 1265 BLAKE2B fa154d4341887bd9da78aa8fcf10935187d6cd8570f27ca68a241322b8dffe56c8860638cc2c045d74646f3a22f49dd87b4c2620f2885b839c9fcb99c9a5aaa6 SHA512 0cf2a7b8a132a5b3510ceeb6dd7474c34e2e05a0de5a29157c73e533140194be91108450539f790124f716d3a8cebf320d0eada3cbabc2f7f8eb0f763d590184 diff --git a/dev-libs/libnest2d/files/libnest2d-0.4-add-disallowed-areas.patch b/dev-libs/libnest2d/files/libnest2d-0.4-add-disallowed-areas.patch new file mode 100644 index 000000000000..ed48cd3eeff8 --- /dev/null +++ b/dev-libs/libnest2d/files/libnest2d-0.4-add-disallowed-areas.patch @@ -0,0 +1,122 @@ +From 2e91be2679b5efa0773292d9d0a2ae72255bb271 Mon Sep 17 00:00:00 2001 +From: Ghostkeeper +Date: Tue, 6 Oct 2020 16:13:15 +0200 +Subject: [PATCH 1/3] Allow for an item to be a disallowed area + +Disallowed areas have slightly different behaviour from fixed items: Other items won't get packed closely around them. Implementation of that pending. + +Contributes to issue CURA-7754. +--- + include/libnest2d/nester.hpp | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp +index 2f207d5..932a060 100644 +--- a/include/libnest2d/nester.hpp ++++ b/include/libnest2d/nester.hpp +@@ -71,6 +71,15 @@ class _Item { + int binid_{BIN_ID_UNSET}, priority_{0}; + bool fixed_{false}; + ++ /** ++ * \brief If this is a fixed area, indicates whether it is a disallowed area ++ * or a previously placed item. ++ * ++ * If this is a disallowed area, other objects will not get packed close ++ * together with this item. It only blocks other items in its area. ++ */ ++ bool disallowed_{false}; ++ + public: + + /// The type of the shape which was handed over as the template argument. +@@ -129,11 +138,18 @@ class _Item { + sh_(sl::create(std::move(contour), std::move(holes))) {} + + inline bool isFixed() const noexcept { return fixed_; } ++ inline bool isDisallowedArea() const noexcept { return disallowed_; } + inline void markAsFixedInBin(int binid) + { + fixed_ = binid >= 0; + binid_ = binid; + } ++ inline void markAsDisallowedAreaInBin(int binid) ++ { ++ fixed_ = binid >= 0; ++ binid_ = binid; ++ disallowed_ = true; ++ } + + inline void binId(int idx) { binid_ = idx; } + inline int binId() const noexcept { return binid_; } + +From ff61049e59d3151462bca7ff2e2268c2b32731e7 Mon Sep 17 00:00:00 2001 +From: Ghostkeeper +Date: Tue, 6 Oct 2020 16:14:36 +0200 +Subject: [PATCH 2/3] Allow unsetting of being a disallowed area + +If you set the bin to -1 or set the item to be a simple fixed item afterwards, it'll no longer be a disallowed area. + +Contributes to issue CURA-7754. +--- + include/libnest2d/nester.hpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp +index 932a060..54761a6 100644 +--- a/include/libnest2d/nester.hpp ++++ b/include/libnest2d/nester.hpp +@@ -143,12 +143,13 @@ class _Item { + { + fixed_ = binid >= 0; + binid_ = binid; ++ disallowed_ = false; + } + inline void markAsDisallowedAreaInBin(int binid) + { + fixed_ = binid >= 0; + binid_ = binid; +- disallowed_ = true; ++ disallowed_ = fixed_; + } + + inline void binId(int idx) { binid_ = idx; } + +From 31391fd173249ad9b906390058e13b09238fadc8 Mon Sep 17 00:00:00 2001 +From: Ghostkeeper +Date: Thu, 8 Oct 2020 11:06:58 +0200 +Subject: [PATCH 3/3] Align items to their starting position if all placed + items are disallowed + +We shouldn't align items to disallowed areas. So place them in the starting position according to the alignment property. + +Lot of work to investigate. But very little code changes! + +Contributes to issue CURA-7754. +--- + include/libnest2d/placers/nfpplacer.hpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/include/libnest2d/placers/nfpplacer.hpp b/include/libnest2d/placers/nfpplacer.hpp +index 96a8cff..b0ebb15 100644 +--- a/include/libnest2d/placers/nfpplacer.hpp ++++ b/include/libnest2d/placers/nfpplacer.hpp +@@ -101,7 +101,7 @@ struct NfpPConfig { + * alignment with the candidate item or do anything else. + * + * \param remaining A container with the remaining items waiting to be +- * placed. You can use some features about the remaining items to alter to ++ * placed. You can use some features about the remaining items to alter the + * score of the current placement. If you know that you have to leave place + * for other items as well, that might influence your decision about where + * the current candidate should be placed. E.g. imagine three big circles +@@ -735,7 +735,8 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer + + + + 3dprint@gentoo.org + Gentoo 3D Printer Project + + + Libnest2D is a library and framework for the 2D bin packaging problem. Inspired from the SVGNest Javascript + library the project is built from scratch in C++11. The library is written with a policy that it should be + usable out of the box with a very simple interface but has to be customizable to the very core as well. The + algorithms are defined in a header only fashion with templated geometry types. These geometries can have custom + or already existing implementation to avoid copying or having unnecessary dependencies. + + A default backend is provided if the user of the library just wants to use it out of the box without additional + integration. This backend is reasonably fast and robust, being built on top of boost geometry and the + polyclipping library. Usage of this default backend implies the dependency on these packages but its header only + as well. + + + tamasmeszaros/libnest2d + + -- cgit v1.2.3