Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Util / Interop / Interop.ThumbnailExtractor.cs
1 using System;
2 using System.Runtime.InteropServices;
3 using Tizen;
4 using Tizen.Multimedia.Util;
5
6 internal static partial class Interop
7 {
8     internal static class ThumbnailExtractor
9     {
10         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
11         public delegate void ThumbnailExtractCallback(ThumbnailExtractorError error, string requestId,
12             int thumbWidth, int thumbHeight, IntPtr thumbData, int thumbSize, IntPtr userData);
13
14         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_create")]
15         internal static extern ThumbnailExtractorError Create(out ThumbnailExtractorHandle handle);
16
17         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_extract")]
18         internal static extern ThumbnailExtractorError Extract(ThumbnailExtractorHandle handle,
19             ThumbnailExtractCallback callback, IntPtr userData, out IntPtr requestId);
20
21         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_set_path")]
22         internal static extern ThumbnailExtractorError SetPath(ThumbnailExtractorHandle handle, string path);
23
24         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_set_size")]
25         internal static extern ThumbnailExtractorError SetSize(ThumbnailExtractorHandle handle, int width, int height);
26
27
28         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_cancel")]
29         internal static extern ThumbnailExtractorError Cancel(ThumbnailExtractorHandle handle, string requestId);
30
31         [DllImport(Libraries.ThumbnailExtractor, EntryPoint = "thumbnail_util_destroy")]
32         internal static extern ThumbnailExtractorError Destroy(IntPtr handle);
33     }
34
35     internal class ThumbnailExtractorHandle : CriticalHandle
36     {
37         protected ThumbnailExtractorHandle() : base(IntPtr.Zero)
38         {
39         }
40
41         public override bool IsInvalid => handle == IntPtr.Zero;
42
43         protected override bool ReleaseHandle()
44         {
45             var result = ThumbnailExtractor.Destroy(handle);
46
47             if (result == ThumbnailExtractorError.None)
48             {
49                 return true;
50             }
51
52             Log.Error(GetType().Name, $"Failed to destroy handle : {result}");
53             return false;
54         }
55     }
56 }