2 using System.Runtime.InteropServices;
4 using Tizen.Multimedia.Util;
6 internal static partial class Interop
8 internal static class ThumbnailExtractor
10 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
11 public delegate void ThumbnailExtractCallback(ThumbnailExtractorError error, string requestId,
12 int thumbWidth, int thumbHeight, IntPtr thumbData, int thumbSize, IntPtr userData);
14 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_create")]
15 internal static extern ThumbnailExtractorError Create(out ThumbnailExtractorHandle handle);
17 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_extract")]
18 internal static extern ThumbnailExtractorError Extract(ThumbnailExtractorHandle handle,
19 ThumbnailExtractCallback callback, IntPtr userData, out IntPtr requestId);
21 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_set_path")]
22 internal static extern ThumbnailExtractorError SetPath(ThumbnailExtractorHandle handle, string path);
24 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_set_size")]
25 internal static extern ThumbnailExtractorError SetSize(ThumbnailExtractorHandle handle, int width, int height);
28 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_cancel")]
29 internal static extern ThumbnailExtractorError Cancel(ThumbnailExtractorHandle handle, string requestId);
31 [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_destroy")]
32 internal static extern ThumbnailExtractorError Destroy(IntPtr handle);
35 internal class ThumbnailExtractorHandle : CriticalHandle
37 protected ThumbnailExtractorHandle() : base(IntPtr.Zero)
41 public override bool IsInvalid => handle == IntPtr.Zero;
43 protected override bool ReleaseHandle()
45 var result = ThumbnailExtractor.Destroy(handle);
47 if (result == ThumbnailExtractorError.None)
52 Log.Error(GetType().Name, $"Failed to destroy handle : {result}");