diff --git a/bindings/java/src/main/java/manifold3d/Manifold.java b/bindings/java/src/main/java/manifold3d/Manifold.java index 110ef95e8..792c1e5e8 100644 --- a/bindings/java/src/main/java/manifold3d/Manifold.java +++ b/bindings/java/src/main/java/manifold3d/Manifold.java @@ -46,7 +46,6 @@ public class Manifold extends Pointer { if (osName.contains("linux")) { try { System.load(Loader.extractResource("/libfreetype.so", null, "libfreetype", ".so").getAbsolutePath()); - System.load(Loader.extractResource("/libTextToPolygon.so", null, "libTextToPolygon", ".so").getAbsolutePath()); System.load(Loader.extractResource("/libmeshIO.so", null, "libmeshIO", ".so").getAbsolutePath()); System.load(Loader.extractResource("/libmeshIO.so", null, "libmeshIO", ".so").getAbsolutePath()); System.load(Loader.extractResource("/libClipper2.so", null, "libClipper2", ".so").getAbsolutePath()); @@ -70,8 +69,6 @@ public class Manifold extends Pointer { try { System.out.println("Loading freetype"); System.load(Loader.extractResource("/libfreetype.6.16.0.dylib", null, "libfreetype", ".dylib").getAbsolutePath()); - System.out.println("Loading textToPolygon"); - System.load(Loader.extractResource("/libTextToPolygon.dylib", null, "libTextToPolygon", ".dylib").getAbsolutePath()); System.out.println("Loading meshIO"); System.load(Loader.extractResource("/libmeshIO.dylib", null, "libmeshIO", ".dylib").getAbsolutePath()); System.out.println("Loading Manifold"); diff --git a/bindings/java/src/main/java/manifold3d/manifold/CrossSection.java b/bindings/java/src/main/java/manifold3d/manifold/CrossSection.java index 613db07db..90da70cea 100644 --- a/bindings/java/src/main/java/manifold3d/manifold/CrossSection.java +++ b/bindings/java/src/main/java/manifold3d/manifold/CrossSection.java @@ -100,7 +100,7 @@ public CrossSection translateY(double y) { public static native @ByVal CrossSection Compose(@ByRef CrossSectionVector crossSection); @Name("Decompose") public native @ByVal CrossSectionVector decompose(); - public static native @ByVal CrossSection Text(@ByRef @StdString String fontFile, @ByRef @StdString String text, int pixelHeight, int interpRes); + public static native @ByVal CrossSection Text(@ByRef @StdString String fontFile, @ByRef @StdString String text, int pixelHeight, int interpRes, @Cast("manifold::CrossSection::FillRule") int fillRule); public static native @ByVal CrossSection Circle(float radius, int circularSegments); public static native @ByVal CrossSection Square(@ByRef DoubleVec2 size, boolean center); public static CrossSection Square(double x, double y, boolean center) { diff --git a/bindings/java/src/test/java/manifold3d/CrossSectionTest.java b/bindings/java/src/test/java/manifold3d/CrossSectionTest.java index a06122e24..0b16db932 100644 --- a/bindings/java/src/test/java/manifold3d/CrossSectionTest.java +++ b/bindings/java/src/test/java/manifold3d/CrossSectionTest.java @@ -36,7 +36,7 @@ public void testCrossSection() { CrossSection innerSection = new CrossSection(innerPolygon, FillRule.NonZero.ordinal()) .translate(new DoubleVec2(3, 0)); - CrossSection text = CrossSection.Text("DejaVuSans.ttf", "abcdefghijk lmnopqrstuvwxyz", 48, 6); + CrossSection text = CrossSection.Text("DejaVuSans.ttf", "abcdefghijk lmnopqrstuvwxyz", 48, 6, FillRule.NonZero.ordinal()); CrossSection circle = CrossSection.Circle(3.0f, 20); Manifold cylinder = Manifold.Extrude(circle, 50, 60, 0, new DoubleVec2(1.0, 1.0)); diff --git a/src/cross_section/include/cross_section.h b/src/cross_section/include/cross_section.h index ce722c8ad..57f97e894 100644 --- a/src/cross_section/include/cross_section.h +++ b/src/cross_section/include/cross_section.h @@ -75,7 +75,7 @@ class CrossSection { CrossSection(const Polygons& contours, FillRule fillrule = FillRule::Positive); CrossSection(const Rect& rect); - static CrossSection Text(const std::string& fontFile, const std::string& text, u_int32_t pixelHeight, int interpRes); + static CrossSection Text(const std::string& fontFile, const std::string& text, u_int32_t pixelHeight, int interpRes, FillRule fillRule); static CrossSection Square(const glm::vec2 dims, bool center = false); static CrossSection Circle(float radius, int circularSegments = 0); ///@} diff --git a/src/cross_section/src/cross_section.cpp b/src/cross_section/src/cross_section.cpp index c51e297dd..05498a894 100644 --- a/src/cross_section/src/cross_section.cpp +++ b/src/cross_section/src/cross_section.cpp @@ -313,9 +313,9 @@ std::shared_ptr CrossSection::GetPaths() const { * @param pixelHeight freetype pixelHeight. * @param interpRes Resolution of interpolation of curves. */ -CrossSection CrossSection::Text(const std::string& fontFile, const std::string& text, u_int32_t pixelHeight, int interpRes) { +CrossSection CrossSection::Text(const std::string& fontFile, const std::string& text, u_int32_t pixelHeight, int interpRes, FillRule fillRule) { Polygons polys = TextToPolygon::textToPolygons(fontFile, text, pixelHeight, interpRes); - return CrossSection(polys, FillRule::NonZero); + return CrossSection(polys, fillRule); } /**