3030package net .imagej .ops .geom .geom3d .mesh ;
3131
3232import java .lang .reflect .Type ;
33+ import java .util .function .Function ;
3334
3435import net .imagej .mesh .Mesh ;
35- import net .imagej .ops .OpService ;
36- import net .imagej .ops .Ops ;
37- import net .imagej .ops .special .function .Functions ;
38- import net .imagej .ops .special .function .UnaryFunctionOp ;
3936import net .imglib2 .IterableInterval ;
4037import net .imglib2 .RandomAccessibleInterval ;
38+ import net .imglib2 .type .BooleanType ;
4139
4240import org .scijava .Priority ;
4341import org .scijava .convert .AbstractConverter ;
4442import org .scijava .convert .ConversionRequest ;
4543import org .scijava .convert .Converter ;
44+ import org .scijava .ops .OpService ;
45+ import org .scijava .ops .function .Functions ;
46+ import org .scijava .ops .types .Nil ;
4647import org .scijava .plugin .Parameter ;
4748import org .scijava .plugin .Plugin ;
4849
5354 */
5455@ SuppressWarnings ("rawtypes" )
5556@ Plugin (type = Converter .class , priority = Priority .VERY_HIGH )
56- public class RAIToMeshConverter extends
57- AbstractConverter <RandomAccessibleInterval , Mesh >
57+ public class RAIToMeshConverter < B extends BooleanType < B >> extends
58+ AbstractConverter <RandomAccessibleInterval < B > , Mesh >
5859{
5960
6061 @ Parameter (required = false )
6162 private OpService ops ;
6263
63- private UnaryFunctionOp <RandomAccessibleInterval , Mesh > marchingCubesFunc ;
64+ private Function <RandomAccessibleInterval < B > , Mesh > marchingCubesFunc ;
6465
6566 @ SuppressWarnings ("unchecked" )
6667 @ Override
6768 public <T > T convert (Object src , Class <T > dest ) {
6869 if (marchingCubesFunc == null ) {
69- marchingCubesFunc = Functions .match (ops ,
70- Ops .Geometric .MarchingCubes .class , Mesh .class ,
71- (RandomAccessibleInterval ) src );
70+ marchingCubesFunc = Functions .match (ops , "geom.marchingCubes" , new Nil <RandomAccessibleInterval <B >>() {},
71+ new Nil <Mesh >() {});
7272 }
7373 if (src instanceof IterableInterval <?>) {
74- return (T ) marchingCubesFunc .calculate ((RandomAccessibleInterval ) src );
74+ return (T ) marchingCubesFunc .apply ((RandomAccessibleInterval ) src );
7575 }
7676 return null ;
7777 }
@@ -81,9 +81,10 @@ public Class<Mesh> getOutputType() {
8181 return Mesh .class ;
8282 }
8383
84+ @ SuppressWarnings ("unchecked" )
8485 @ Override
85- public Class <RandomAccessibleInterval > getInputType () {
86- return RandomAccessibleInterval .class ;
86+ public Class <RandomAccessibleInterval < B > > getInputType () {
87+ return ( Class ) RandomAccessibleInterval .class ;
8788 }
8889
8990 @ Override
0 commit comments