shared/java/skottie/AnimationBuilder.java (108 lines of code) (raw):
package org.jetbrains.skija.skottie;
import java.lang.ref.*;
import org.jetbrains.annotations.*;
import org.jetbrains.skija.*;
import org.jetbrains.skija.impl.*;
import org.jetbrains.skija.resources.*;
public class AnimationBuilder extends Managed {
static { Library.staticLoad(); }
@ApiStatus.Internal
public AnimationBuilder(long ptr) {
super(ptr, _FinalizerHolder.PTR);
}
@ApiStatus.Internal
public static class _FinalizerHolder {
public static final long PTR = _nGetFinalizer();
}
public AnimationBuilder() {
this(new AnimationBuilderFlag[0]);
}
public AnimationBuilder(AnimationBuilderFlag... builderFlags) {
this(_nMake(_flagsToInt(builderFlags)));
Stats.onNativeCall();
}
@ApiStatus.Internal
public static int _flagsToInt(AnimationBuilderFlag... builderFlags) {
int flags = 0;
for (AnimationBuilderFlag flag: builderFlags)
flags |= flag._flag;
return flags;
}
/**
* <p>Specify a font manager for loading animation fonts.</p>
*/
@NotNull @Contract("_ -> this")
public AnimationBuilder setFontManager(@Nullable FontMgr fontMgr) {
try {
Stats.onNativeCall();
_nSetFontManager(_ptr, Native.getPtr(fontMgr));
return this;
} finally {
Reference.reachabilityFence(fontMgr);
}
}
/**
* <p>Register a {@link Logger} with this builder.</p>
*/
@NotNull @Contract("_ -> this")
public AnimationBuilder setLogger(@Nullable Logger logger) {
try {
Stats.onNativeCall();
_nSetLogger(_ptr, Native.getPtr(logger));
return this;
} finally {
Reference.reachabilityFence(logger);
}
}
@NotNull @Contract("_ -> this")
public AnimationBuilder setResourceProvider(@Nullable ResourceProvider resourceProvider) {
try {
Stats.onNativeCall();
_nSetResourceProvider(_ptr, Native.getPtr(resourceProvider));
return this;
} finally {
Reference.reachabilityFence(resourceProvider);
}
}
@NotNull @Contract("!null -> new; null -> fail")
public Animation buildFromString(@NotNull String data) {
try {
assert data != null : "Can’t buildFromString with data == null";
Stats.onNativeCall();
long ptr = _nBuildFromString(_ptr, data);
if (ptr == 0)
throw new IllegalArgumentException("Failed to create Animation from string: \"" + data + "\"");
return new Animation(ptr);
} finally {
Reference.reachabilityFence(this);
}
}
@NotNull @Contract("!null -> new; null -> fail")
public Animation buildFromFile(@NotNull String path) {
try {
assert path != null : "Can’t buildFromFile with path == null";
Stats.onNativeCall();
long ptr = _nBuildFromFile(_ptr, path);
if (ptr == 0)
throw new IllegalArgumentException("Failed to create Animation from path: " + path);
return new Animation(ptr);
} finally {
Reference.reachabilityFence(this);
}
}
@NotNull @Contract("!null -> new; null -> fail")
public Animation buildFromData(@NotNull Data data) {
try {
assert data != null : "Can’t buildFromData with data == null";
Stats.onNativeCall();
long ptr = _nBuildFromData(_ptr, Native.getPtr(data));
if (ptr == 0)
throw new IllegalArgumentException("Failed to create Animation from data");
return new Animation(ptr);
} finally {
Reference.reachabilityFence(this);
}
}
@ApiStatus.Internal public static native long _nGetFinalizer();
@ApiStatus.Internal public static native long _nMake(int flags);
@ApiStatus.Internal public static native void _nSetFontManager(long ptr, long fontMgrPtr);
@ApiStatus.Internal public static native void _nSetLogger(long ptr, long loggerPtr);
@ApiStatus.Internal public static native void _nSetResourceProvider(long ptr, long resourceProviderPtr);
@ApiStatus.Internal public static native long _nBuildFromString(long ptr, String data);
@ApiStatus.Internal public static native long _nBuildFromFile(long ptr, String path);
@ApiStatus.Internal public static native long _nBuildFromData(long ptr, long dataPtr);
}