mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 01:06:00 +08:00
63 lines
2.4 KiB
Dart
63 lines
2.4 KiB
Dart
///
|
|
/// Spine Runtimes License Agreement
|
|
/// Last updated April 5, 2025. Replaces all prior versions.
|
|
///
|
|
/// Copyright (c) 2013-2025, Esoteric Software LLC
|
|
///
|
|
/// Integration of the Spine Runtimes into software or otherwise creating
|
|
/// derivative works of the Spine Runtimes is permitted under the terms and
|
|
/// conditions of Section 2 of the Spine Editor License Agreement:
|
|
/// http://esotericsoftware.com/spine-editor-license
|
|
///
|
|
/// Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
/// or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
/// "Products"), provided that each user of the Products must obtain their own
|
|
/// Spine Editor license and redistribution of the Products in any form must
|
|
/// include this license and copyright notice.
|
|
///
|
|
/// THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
/// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
/// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
/// DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
/// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
/// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
/// BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
/// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
/// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
/// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
///
|
|
|
|
import 'dart:ffi';
|
|
import 'dart:io';
|
|
|
|
import 'package:ffi/ffi.dart';
|
|
|
|
const String _libName = 'spine_flutter';
|
|
final DynamicLibrary _dylib = () {
|
|
if (Platform.isMacOS || Platform.isIOS) {
|
|
return DynamicLibrary.open('$_libName.framework/$_libName');
|
|
}
|
|
if (Platform.isAndroid || Platform.isLinux) {
|
|
return DynamicLibrary.open('lib$_libName.so');
|
|
}
|
|
if (Platform.isWindows) {
|
|
return DynamicLibrary.open('$_libName.dll');
|
|
}
|
|
throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');
|
|
}();
|
|
|
|
class SpineFlutterFFI {
|
|
DynamicLibrary dylib;
|
|
Allocator allocator;
|
|
|
|
SpineFlutterFFI(this.dylib, this.allocator);
|
|
}
|
|
|
|
Future<SpineFlutterFFI> initSpineFlutterFFI(bool useStaticLinkage) async {
|
|
if (useStaticLinkage) {
|
|
return SpineFlutterFFI(DynamicLibrary.process(), malloc);
|
|
} else {
|
|
return SpineFlutterFFI(_dylib, malloc);
|
|
}
|
|
}
|