This commit is contained in:
Timothy Risi 2017-07-26 16:11:59 -08:00 коммит произвёл GitHub
Родитель 28f1fbe9fe
Коммит b7cd04ed28
3 изменённых файлов: 143 добавлений и 1 удалений

Просмотреть файл

@ -188,6 +188,31 @@ namespace XamCore.ImageIO {
}
#endif
[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)]
public partial class CGImageAuxiliaryDataInfo {
public NSData DepthData { get; set; }
public NSDictionary DepthDataDescription { get; set; }
public CGImageMetadata Metadata { get; set; }
internal NSMutableDictionary ToDictionary ()
{
var dict = new NSMutableDictionary ();
if (Metadata != null)
dict.LowlevelSetObject (Metadata.Handle, kMetadata);
if (DepthDataDescription != null)
dict.LowlevelSetObject (DepthDataDescription.Handle, DataDescription);
if (DepthData != null)
dict.LowlevelSetObject (DepthDataDescription.Handle, Data);
return dict;
}
}
public class CGImageDestination : INativeObject, IDisposable {
internal IntPtr handle;
@ -470,5 +495,17 @@ namespace XamCore.ImageIO {
o.Dispose ();
}
}
[Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)]
[DllImport (Constants.ImageIOLibrary)]
static extern void CGImageDestinationAddAuxiliaryDataInfo (IntPtr /* CGImageDestinationRef* */ idst, IntPtr /* CFStringRef* */ auxiliaryImageDataType, IntPtr /* CFDictionaryRef* */ auxiliaryDataInfoDictionary);
[Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)]
public void AddAuxiliaryDataInfo (CGImageDestination dest, CGImageAuxiliaryDataType auxiliaryImageDataType, CGImageAuxiliaryDataInfo auxiliaryDataInfo)
{
using (var dict = auxiliaryDataInfo?.ToDictionary ()) {
CGImageDestinationAddAuxiliaryDataInfo (dest.GetHandle (), auxiliaryImageDataType.GetConstant ().GetHandle (), dict.GetHandle ());
}
}
}
}
}

Просмотреть файл

@ -376,5 +376,44 @@ namespace XamCore.ImageIO {
{
return CGImageSourceGetStatusAtIndex (handle, index);
}
[Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)]
[DllImport (Constants.ImageIOLibrary)]
static extern IntPtr /* CFDictionaryRef* */ CGImageSourceCopyAuxiliaryDataInfoAtIndex (IntPtr /* CGImageSourceRef* */ isrc, nuint index, IntPtr /* CFStringRef* */ auxiliaryImageDataType);
[Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)]
public CGImageAuxiliaryDataInfo CopyAuxiliaryDataInfo (CGImageSource imageSource, nuint index, CGImageAuxiliaryDataType auxiliaryImageDataType)
{
var ptr = CGImageSourceCopyAuxiliaryDataInfoAtIndex (imageSource.GetHandle (), index, auxiliaryImageDataType.GetConstant ().GetHandle ());
if (ptr == IntPtr.Zero)
return null;
var info = new CGImageAuxiliaryDataInfo ();
using (var dictionary = Runtime.GetNSObject<NSDictionary> (ptr)) {
bool success;
NSData data;
success = dictionary.TryGetValue<NSData> (new NSString (CGImageAuxiliaryDataInfo.Data), out data);
if (success)
info.DepthData = data;
NSDictionary dict;
success = dictionary.TryGetValue<NSDictionary> (new NSString (CGImageAuxiliaryDataInfo.DataDescription), out dict);
if (success)
info.DepthDataDescription = dict;
CGImageMetadata metadata;
success = dictionary.TryGetValue<CGImageMetadata> (new NSString (CGImageAuxiliaryDataInfo.kMetadata), out metadata);
if (success)
info.Metadata = metadata;
}
return info;
}
}
}

Просмотреть файл

@ -857,6 +857,50 @@ namespace XamCore.ImageIO {
[Field ("kCGImagePropertyMakerAppleDictionary")]
NSString MakerAppleDictionary { get; }
#endif
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyImageCount")]
NSString ImageCount { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyWidth")]
NSString Width { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyHeight")]
NSString Height { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyBytesPerRow")]
NSString BytesPerRow { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyNamedColorSpace")]
NSString NamedColorSpace { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyPixelFormat")]
NSString PixelFormat { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyImages")]
NSString Images { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyThumbnailImages")]
NSString ThumbnailImages { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyAuxiliaryData")]
NSString AuxiliaryData { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyAuxiliaryDataType")]
NSString AuxiliaryDataType { get; }
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
[Field ("kCGImagePropertyFileContentsDictionary")]
NSString FileContentsDictionary { get; }
}
[Since (7,0), MountainLion]
@ -1169,4 +1213,26 @@ namespace XamCore.ImageIO {
IntPtr kOrientation { get; }
}
#endif
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
enum CGImageAuxiliaryDataType {
[Field ("kCGImageAuxiliaryDataTypeDepth")]
Depth,
[Field ("kCGImageAuxiliaryDataTypeDisparity")]
Disparity,
}
[Partial]
[Mac (10, 13), iOS (11,0), TV (11,0), Watch (4,0)]
interface CGImageAuxiliaryDataInfo {
[Internal, Field ("kCGImageAuxiliaryDataInfoData")]
IntPtr Data { get; }
[Internal, Field ("kCGImageAuxiliaryDataInfoDataDescription")]
IntPtr DataDescription { get; }
[Internal, Field ("kCGImageAuxiliaryDataInfoMetadata")]
IntPtr kMetadata { get; }
}
}