import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'package:segmentation_douglas_peucker_flutter/dali_point.dart'; import 'package:segmentation_douglas_peucker_flutter/dotnet_exception.dart'; import 'package:segmentation_douglas_peucker_flutter/gen/generated_bindings.dart'; import 'package:segmentation_douglas_peucker_flutter/lib.dart'; abstract class MyLib { static void runExample() { final NativeLibrary nativeLibrary = NativeLibrary(Lib.init('MyLib.Managed')); final Pointer exception = calloc(); print('Exception allocated ! ($exception)'); final MyLib_Hello_t hello = nativeLibrary.MyLib_Hello_Create(exception); exception.handle(); print('Hello created ! ($hello)'); final MathLib_Math_t mathLib = nativeLibrary.MyLib_Hello_GetMath(hello, exception); exception.handle(); print('MathLib created ! ($mathLib)'); final System_Drawing_Point_t point1 = nativeLibrary.System_Drawing_Point_Create(200, 400, exception); exception.handle(); final DaliPoint daliPoint1 = DaliPoint.fromPointer(point1); print('Point1: $daliPoint1'); final System_Drawing_Point_t point2 = nativeLibrary.System_Drawing_Point_Create(200, 500, exception); exception.handle(); final DaliPoint daliPoint2 = DaliPoint.fromPointer(point2); print('Point2: $daliPoint2'); final System_Drawing_Point_t point3 = nativeLibrary.System_Drawing_Point_Create(200, 600, exception); exception.handle(); final DaliPoint daliPoint3 = DaliPoint.fromPointer(point3); print('Point3: $daliPoint3'); final System_Type_t pointType = nativeLibrary.System_Drawing_Point_TypeOf(); final System_Collections_Generic_List_A1_t points = nativeLibrary.System_Collections_Generic_List_A1_Create_1( pointType, 3, exception, ); exception.handle(); print('Points list created ! ($points)'); nativeLibrary.System_Collections_Generic_List_A1_Add( points, pointType, point1, exception); exception.handle(); print('Point1 added !'); nativeLibrary.System_Collections_Generic_List_A1_Add( points, pointType, point2, exception); exception.handle(); print('Point2 added !'); nativeLibrary.System_Collections_Generic_List_A1_Add( points, pointType, point3, exception); exception.handle(); print('Point3 added !'); final pointSum = nativeLibrary.MathLib_Math_SumPoints(mathLib, points, exception); exception.handle(); final DaliPoint daliPointSum = DaliPoint.fromPointer(pointSum); print('Point sum: $daliPointSum'); } }