Example #1
0
        /// <summary>
        /// Asynchronously loads a composition from an arbitrary input stream.
        /// </summary>
        public static Task <LottieComposition> FromInputStreamAsync(Context context, System.IO.Stream stream, CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.FromCanceled <LottieComposition>(cancellationToken));
            }

            var tcs        = new TaskCompletionSource <LottieComposition>();
            var cancelable = LottieComposition.FromInputStream(context, stream, (composition) =>
            {
                cancellationToken.ThrowIfCancellationRequested();
                tcs.SetResult(composition);
            });

            cancellationToken.Register(() =>
            {
                if (!tcs.Task.IsCompleted)
                {
                    cancelable.Cancel();
                    tcs.TrySetCanceled(cancellationToken);
                }
            });

            return(tcs.Task);
        }
Example #2
0
 /// <summary>
 /// Asynchronously loads a composition from an arbitrary input stream.
 /// </summary>
 public static LottieComposition.ICancellable FromInputStream(Context context, System.IO.Stream stream, Action <LottieComposition> onLoaded)
 {
     return(LottieComposition.FromInputStream(context, stream, new ActionCompositionLoaded(onLoaded)));
 }