// // Copyright 2011, Novell, Inc. // Copyright 2011, Regan Sarwas // // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // // imagekit.cs: Bindings for the Image Kit API // using System; using AppKit; using Foundation; using ObjCRuntime; using CoreImage; using ImageCaptureCore; using CoreGraphics; using CoreAnimation; namespace ImageKit { enum IKToolMode { // Constants introduced in 10.5 and 10.6 [Field ("IKToolModeAnnotate")] Annotate, [Field ("IKToolModeCrop")] Crop, [Field ("IKToolModeMove")] Move, [Field ("IKToolModeNone")] None, [Field ("IKToolModeRotate")] Rotate, [Field ("IKToolModeSelect")] Select, [Field ("IKToolModeSelectEllipse")] SelectEllipse, [Field ("IKToolModeSelectLasso")] SelectLasso, [Field ("IKToolModeSelectRect")] SelectRect, } enum IKOverlayType { // Constants introduced in 10.5 [Field ("IKOverlayTypeBackground")] Background, [Field ("IKOverlayTypeImage")] Image, } [BaseType (typeof (NSView), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (IKCameraDeviceViewDelegate)})] interface IKCameraDeviceView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDelegate { get; set; } [Wrap ("WeakDelegate")] [Protocolize] IKCameraDeviceViewDelegate Delegate { get; set; } [Export ("cameraDevice", ArgumentSemantic.Assign)] ICCameraDevice CameraDevice { get; set; } [Export ("hasDisplayModeTable")] bool HasDisplayModeTable { get; set; } [Export ("hasDisplayModeIcon")] bool HasDisplayModeIcon { get; set; } [Export ("downloadAllControlLabel", ArgumentSemantic.Copy)] string DownloadAllControlLabel { get; set; } [Export ("downloadSelectedControlLabel", ArgumentSemantic.Copy)] string DownloadSelectedControlLabel { get; set; } [Export ("iconSize")] nint IconSize { get; set; } [Export ("transferMode")] IKCameraDeviceViewTransferMode TransferMode { get; set; } [Export ("displaysDownloadsDirectoryControl")] bool DisplaysDownloadsDirectoryControl { get; set; } [Export ("downloadsDirectory", ArgumentSemantic.Retain)] NSUrl DownloadsDirectory { get; set; } [Export ("displaysPostProcessApplicationControl")] bool DisplaysPostProcessApplicationControl { get; set; } [Export ("postProcessApplication", ArgumentSemantic.Retain)] NSUrl PostProcessApplication { get; set; } [Export ("canRotateSelectedItemsLeft")] bool CanRotateSelectedItemsLeft { get; } [Export ("canRotateSelectedItemsRight")] bool CanRotateSelectedItemsRight { get; } [Export ("canDeleteSelectedItems")] bool CanDeleteSelectedItems { get; } [Export ("canDownloadSelectedItems")] bool CanDownloadSelectedItems { get; } [Export ("selectedIndexes")] NSIndexSet SelectedIndexes { get; } [Export ("selectIndexes:byExtendingSelection:")] void SelectItemsAt (NSIndexSet indexes, bool extendSelection); [Export ("rotateLeft:")] void RotateLeft (NSObject sender); [Export ("rotateRight:")] void RotateRight (NSObject sender); [Export ("deleteSelectedItems:")] void DeleteSelectedItems (NSObject sender); [Export ("downloadSelectedItems:")] void DownloadSelectedItems (NSObject sender); [Export ("downloadAllItems:")] void DownloadAllItems (NSObject sender); [Export ("mode", ArgumentSemantic.Assign)] IKCameraDeviceViewDisplayMode Mode { get; set; } } [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKCameraDeviceViewDelegate { [Export ("cameraDeviceViewSelectionDidChange:"), EventArgs ("IKCameraDeviceView")] void SelectionDidChange (IKCameraDeviceView cameraDeviceView); [Export ("cameraDeviceView:didDownloadFile:location:fileData:error:"), EventArgs ("IKCameraDeviceViewICCameraFileNSUrlNSDataNSError")] void DidDownloadFile (IKCameraDeviceView cameraDeviceView, ICCameraFile file, NSUrl url, NSData data, NSError error); [Export ("cameraDeviceView:didEncounterError:"), EventArgs ("IKCameraDeviceViewNSError")] void DidEncounterError (IKCameraDeviceView cameraDeviceView, NSError error); } [BaseType (typeof (NSView), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (IKDeviceBrowserViewDelegate)})] interface IKDeviceBrowserView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDelegate { get; set; } [Wrap ("WeakDelegate")] [Protocolize] IKDeviceBrowserViewDelegate Delegate { get; set; } [Export ("displaysLocalCameras")] bool DisplaysLocalCameras { get; set; } [Export ("displaysNetworkCameras")] bool DisplaysNetworkCameras { get; set; } [Export ("displaysLocalScanners")] bool DisplaysLocalScanners { get; set; } [Export ("displaysNetworkScanners")] bool DisplaysNetworkScanners { get; set; } [Export ("mode")] IKDeviceBrowserViewDisplayMode Mode { get; set; } [Export ("selectedDevice")] ICDevice SelectedDevice { get; } } [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKDeviceBrowserViewDelegate { [Abstract] [Export ("deviceBrowserView:selectionDidChange:"), EventArgs ("IKDeviceBrowserViewICDevice")] void SelectionDidChange (IKDeviceBrowserView deviceBrowserView, ICDevice device); [Export ("deviceBrowserView:didEncounterError:"), EventArgs ("IKDeviceBrowserViewNSError")] void DidEncounterError (IKDeviceBrowserView deviceBrowserView, NSError error); } [BaseType (typeof (NSPanel))] interface IKFilterBrowserPanel { [Static] [Export ("filterBrowserPanelWithStyleMask:")] IKFilterBrowserPanel Create (IKFilterBrowserPanelStyleMask styleMask); [Export ("filterName")] string FilterName { get; } //FIXME - can we do this in a more C#ish way. [Export ("beginWithOptions:modelessDelegate:didEndSelector:contextInfo:")] void Begin (NSDictionary options, NSObject modelessDelegate, Selector didEndSelector, IntPtr contextInfo); [Export ("beginSheetWithOptions:modalForWindow:modalDelegate:didEndSelector:contextInfo:")] void BeginSheet (NSDictionary options, NSWindow docWindow, NSObject modalDelegate, Selector didEndSelector, IntPtr contextInfo); [Export ("runModalWithOptions:")] int RunModal (NSDictionary options); /* int, not NSInteger */ [Export ("filterBrowserViewWithOptions:")] IKFilterBrowserView FilterBrowserView (NSDictionary options); [Export ("finish:")] void Finish (NSObject sender); //Check - Do we need Notifications strings? [Notification] [Field ("IKFilterBrowserFilterSelectedNotification")] NSString FilterSelectedNotification { get; } [Notification] [Field ("IKFilterBrowserFilterDoubleClickNotification")] NSString FilterDoubleClickNotification { get; } [Notification] [Field ("IKFilterBrowserWillPreviewFilterNotification")] NSString WillPreviewFilterNotification { get; } //Dictionary Keys [Field ("IKFilterBrowserShowCategories")] NSString ShowCategories { get; } [Field ("IKFilterBrowserShowPreview")] NSString ShowPreview { get; } [Field ("IKFilterBrowserExcludeCategories")] NSString ExcludeCategories { get; } [Field ("IKFilterBrowserExcludeFilters")] NSString ExcludeFilters { get; } [Field ("IKFilterBrowserDefaultInputImage")] NSString DefaultInputImage { get; } } [BaseType (typeof (NSView))] interface IKFilterBrowserView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); [Export ("setPreviewState:")] void SetPreviewState (bool showPreview); [Export ("filterName")] string FilterName { get; } } //This protocol is an addition to CIFilter. It is implemented by any filter that provides its own user interface. [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKFilterCustomUIProvider { // The Apple documentation says the native implementation of CIFilter.GetFilterUIView will call // this method (if it exists). This means that This method should not be called GetFilterUIView // (because it seems like you shouldn't override CIFilter.GetFilterUIView, and implementing // IIKFilterCustomUIProvider.GetFilterUIView in a CIFilter subclass without overriding CIFilter.GetFilterUIView // just turns ugly). So rename this for new-style assemblies to ProvideFilterUIView. [Abstract] [Export ("provideViewForUIConfiguration:excludedKeys:")] #if XAMCORE_2_0 IKFilterUIView ProvideFilterUIView (NSDictionary configurationOptions, [NullAllowed] NSArray excludedKeys); #else IKFilterUIView GetFilterUIView (NSDictionary configurationOptions, [NullAllowed] NSArray excludedKeys); #endif //UIConfiguration keys for NSDictionary [Field ("IKUISizeFlavor")] NSString SizeFlavor { get; } [Field ("IKUISizeMini")] NSString SizeMini { get; } [Field ("IKUISizeSmall")] NSString SizeSmall { get; } [Field ("IKUISizeRegular")] NSString SizeRegular { get; } [Field ("IKUImaxSize")] NSString MaxSize { get; } [Field ("IKUIFlavorAllowFallback")] NSString FlavorAllowFallback { get; } } [BaseType (typeof (NSView))] interface IKFilterUIView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); [Export ("initWithFrame:filter:")] IntPtr Constructor (CGRect frame, CIFilter filter); [Export ("filter")] CIFilter Filter { get; } [Export ("objectController")] NSObjectController ObjectController { get; } [Static] [Export ("viewWithFrame:filter:")] IKFilterUIView Create (CGRect frame, CIFilter filter); } [BaseType (typeof (NSObject))] interface IKImageBrowserCell { [Export ("imageBrowserView")] IKImageBrowserView ImageBrowserView { get; } [Export ("representedItem")] NSObject RepresentedItem { get; } [Export ("indexOfRepresentedItem")] nint IndexOfRepresentedItem { get; } [Export ("frame")] CGRect Frame { get; } [Export ("imageContainerFrame")] CGRect ImageContainerFrame { get; } [Export ("imageFrame")] CGRect ImageFrame { get; } [Export ("selectionFrame")] CGRect SelectionFrame { get; } [Export ("titleFrame")] CGRect TitleFrame { get; } [Export ("subtitleFrame")] CGRect SubtitleFrame { get; } [Export ("imageAlignment")] NSImageAlignment ImageAlignment { get; } [Export ("isSelected")] bool IsSelected { get; } [Export ("cellState")] IKImageBrowserCellState CellState { get; } [Export ("opacity")] nfloat Opacity { get; } [Export ("layerForType:")] CALayer Layer (string layerType); // layerType is one of the following [Field ("IKImageBrowserCellBackgroundLayer")] NSString BackgroundLayer { get; } [Field ("IKImageBrowserCellForegroundLayer")] NSString ForegroundLayer { get; } [Field ("IKImageBrowserCellSelectionLayer")] NSString SelectionLayer { get; } [Field ("IKImageBrowserCellPlaceHolderLayer")] NSString PlaceHolderLayer { get; } } [Deprecated (PlatformName.MacOSX, 10,14, message: "Use 'NSCollectionView' instead.")] [BaseType (typeof (NSView), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (IKImageBrowserDelegate)})] interface IKImageBrowserView : NSDraggingSource { //@category IKImageBrowserView (IKMainMethods) [Export ("initWithFrame:")] IntPtr Constructor (CGRect frame); //Having a weak and strong datasource seems to work. [Export ("dataSource", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDataSource { get; set; } [Wrap ("WeakDataSource")] [Protocolize] IKImageBrowserDataSource DataSource { get; set; } [Export ("reloadData")] void ReloadData (); [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDelegate { get; set; } [Wrap ("WeakDelegate")] [Protocolize] IKImageBrowserDelegate Delegate { get; set; } //@category IKImageBrowserView (IKAppearance) [Export ("cellsStyleMask")] IKCellsStyle CellsStyleMask { get; set; } [Export ("constrainsToOriginalSize")] bool ConstrainsToOriginalSize { get; set; } [Export ("backgroundLayer")] CALayer BackgroundLayer { get; set; } [Export ("foregroundLayer")] CALayer ForegroundLayer { get; set; } [Export ("newCellForRepresentedItem:")] IKImageBrowserCell NewCell ([Protocolize] IKImageBrowserItem representedItem); [Export ("cellForItemAtIndex:")] IKImageBrowserCell GetCellAt (nint itemIndex); //@category IKImageBrowserView (IKBrowsing) [Export ("zoomValue")] float ZoomValue { get; set; } /* float, not CGFloat */ [Export ("contentResizingMask")] NSViewResizingMask ContentResizingMask { get; set; } [Export ("scrollIndexToVisible:")] void ScrollIndexToVisible (nint index); [Export ("cellSize")] CGSize CellSize { get; set; } [Export ("intercellSpacing")] CGSize IntercellSpacing { get; set; } [Export ("indexOfItemAtPoint:")] nint GetIndexOfItem (CGPoint point); [Export ("itemFrameAtIndex:")] CGRect GetItemFrame (nint index); [Export ("visibleItemIndexes")] NSIndexSet GetVisibleItemIndexes (); [Export ("rowIndexesInRect:")] NSIndexSet GetRowIndexes (CGRect rect); [Export ("columnIndexesInRect:")] NSIndexSet GetColumnIndexes (CGRect rect); [Export ("rectOfColumn:")] CGRect GetRectOfColumn (nint columnIndex); [Export ("rectOfRow:")] CGRect GetRectOfRow (nint rowIndex); [Export ("numberOfRows")] nint RowCount { get; } [Export ("numberOfColumns")] nint ColumnCount { get; } [Export ("canControlQuickLookPanel")] bool CanControlQuickLookPanel { get; set; } //@category IKImageBrowserView (IKSelectionReorderingAndGrouping) [Export ("selectionIndexes")] NSIndexSet SelectionIndexes { get; } [Export ("setSelectionIndexes:byExtendingSelection:")] void SelectItemsAt (NSIndexSet indexes, bool extendSelection); [Export ("allowsMultipleSelection")] bool AllowsMultipleSelection { get; set; } [Export ("allowsEmptySelection")] bool AllowsEmptySelection { get; set; } [Export ("allowsReordering")] bool AllowsReordering { get; set; } [Export ("animates")] bool Animates { get; set; } [Export ("expandGroupAtIndex:")] void ExpandGroup (nint index); [Export ("collapseGroupAtIndex:")] void CollapseGroup (nint index); [Export ("isGroupExpandedAtIndex:")] bool IsGroupExpanded (nint index); //@category IKImageBrowserView (IKDragNDrop) [Export ("draggingDestinationDelegate", ArgumentSemantic.Weak)] [Protocolize] NSDraggingDestination DraggingDestinationDelegate { get; set; } [Export ("indexAtLocationOfDroppedItem")] nint GetIndexAtLocationOfDroppedItem (); [Export ("dropOperation")] IKImageBrowserDropOperation DropOperation (); [Export ("allowsDroppingOnItems")] bool AllowsDroppingOnItems { get; set; } [Export ("setDropIndex:dropOperation:")] void SetDropIndex (nint index, IKImageBrowserDropOperation operation); // Keys for the view options, set with base.setValue [Field ("IKImageBrowserBackgroundColorKey")] NSString BackgroundColorKey { get; } [Field ("IKImageBrowserSelectionColorKey")] NSString SelectionColorKey { get; } [Field ("IKImageBrowserCellsOutlineColorKey")] NSString CellsOutlineColorKey { get; } [Field ("IKImageBrowserCellsTitleAttributesKey")] NSString CellsTitleAttributesKey { get; } [Field ("IKImageBrowserCellsHighlightedTitleAttributesKey")] NSString CellsHighlightedTitleAttributesKey { get; } [Field ("IKImageBrowserCellsSubtitleAttributesKey")] NSString CellsSubtitleAttributesKey { get; } } [BaseType (typeof (NSObject))] [Model] [Protocol (IsInformal = true)] interface IKImageBrowserDataSource { [Abstract] [Export ("numberOfItemsInImageBrowser:")] nint ItemCount (IKImageBrowserView aBrowser); [Abstract] [Export ("imageBrowser:itemAtIndex:")] #if XAMCORE_2_0 IIKImageBrowserItem GetItem (IKImageBrowserView aBrowser, nint index); #else IKImageBrowserItem GetItem (IKImageBrowserView aBrowser, nint index); #endif [Export ("imageBrowser:removeItemsAtIndexes:")] void RemoveItems (IKImageBrowserView aBrowser, NSIndexSet indexes); [Export ("imageBrowser:moveItemsAtIndexes:toIndex:")] bool MoveItems (IKImageBrowserView aBrowser, NSIndexSet indexes, nint destinationIndex); [Export ("imageBrowser:writeItemsAtIndexes:toPasteboard:")] nint WriteItemsToPasteboard (IKImageBrowserView aBrowser, NSIndexSet itemIndexes, NSPasteboard pasteboard); [Export ("numberOfGroupsInImageBrowser:")] nint GroupCount (IKImageBrowserView aBrowser); [Export ("imageBrowser:groupAtIndex:")] NSDictionary GetGroup (IKImageBrowserView aBrowser, nint index); // Keys for Dictionary returned by GetGroup [Field ("IKImageBrowserGroupRangeKey")] NSString GroupRangeKey { get; } [Field ("IKImageBrowserGroupBackgroundColorKey")] NSString GroupBackgroundColorKey { get; } [Field ("IKImageBrowserGroupTitleKey")] NSString GroupTitleKey { get; } [Field ("IKImageBrowserGroupStyleKey")] NSString GroupStyleKey { get; } [Field ("IKImageBrowserGroupHeaderLayer")] NSString GroupHeaderLayer { get; } [Field ("IKImageBrowserGroupFooterLayer")] NSString GroupFooterLayer { get; } } [BaseType (typeof (NSObject))] [Model] [Protocol (IsInformal = true)] interface IKImageBrowserItem { [Abstract] [Export ("imageUID")] string ImageUID { get; } [Abstract] [Export ("imageRepresentationType")] NSString ImageRepresentationType { get; } //possible strings returned by ImageRepresentationType [Field ("IKImageBrowserPathRepresentationType")] NSString PathRepresentationType { get; } [Field ("IKImageBrowserNSURLRepresentationType")] NSString NSURLRepresentationType { get; } [Field ("IKImageBrowserNSImageRepresentationType")] NSString NSImageRepresentationType { get; } [Field ("IKImageBrowserCGImageRepresentationType")] NSString CGImageRepresentationType { get; } [Field ("IKImageBrowserCGImageSourceRepresentationType")] NSString CGImageSourceRepresentationType { get; } [Field ("IKImageBrowserNSDataRepresentationType")] NSString NSDataRepresentationType { get; } [Field ("IKImageBrowserNSBitmapImageRepresentationType")] NSString NSBitmapImageRepresentationType { get; } [Field ("IKImageBrowserQTMovieRepresentationType")] NSString QTMovieRepresentationType { get; } [Field ("IKImageBrowserQTMoviePathRepresentationType")] NSString QTMoviePathRepresentationType { get; } [Field ("IKImageBrowserQCCompositionRepresentationType")] NSString QCCompositionRepresentationType { get; } [Field ("IKImageBrowserQCCompositionPathRepresentationType")] NSString QCCompositionPathRepresentationType { get; } [Field ("IKImageBrowserQuickLookPathRepresentationType")] NSString QuickLookPathRepresentationType { get; } [Field ("IKImageBrowserIconRefPathRepresentationType")] NSString IconRefPathRepresentationType { get; } [Field ("IKImageBrowserIconRefRepresentationType")] NSString IconRefRepresentationType { get; } [Field ("IKImageBrowserPDFPageRepresentationType")] NSString PDFPageRepresentationType { get; } [Abstract] [Export ("imageRepresentation")] NSObject ImageRepresentation { get; } [Export ("imageVersion")] nint ImageVersion { get; } [Export ("imageTitle")] string ImageTitle { get; } [Export ("imageSubtitle")] string ImageSubtitle { get; } [Export ("isSelectable")] bool IsSelectable { get; } } interface IIKImageBrowserItem {} [BaseType (typeof (NSObject))] [Model] [Protocol (IsInformal = true)] interface IKImageBrowserDelegate { [Export ("imageBrowserSelectionDidChange:"), EventArgs ("IKImageBrowserView")] void SelectionDidChange (IKImageBrowserView browser); [Export ("imageBrowser:cellWasDoubleClickedAtIndex:"), EventArgs ("IKImageBrowserViewIndex")] void CellWasDoubleClicked (IKImageBrowserView browser, nint index); [Export ("imageBrowser:cellWasRightClickedAtIndex:withEvent:"), EventArgs ("IKImageBrowserViewIndexEvent")] void CellWasRightClicked (IKImageBrowserView browser, nint index, NSEvent nsevent); [Export ("imageBrowser:backgroundWasRightClickedWithEvent:"), EventArgs ("IKImageBrowserViewEvent")] void BackgroundWasRightClicked (IKImageBrowserView browser, NSEvent nsevent); } [BaseType (typeof (NSPanel))] [DisableDefaultCtor] // crash when disposed, sharedImageEditPanel must be used interface IKImageEditPanel { [Static] [Export ("sharedImageEditPanel")] IKImageEditPanel SharedPanel { get; } [Export ("dataSource", ArgumentSemantic.Assign), NullAllowed] [Protocolize] IKImageEditPanelDataSource DataSource { get; set; } [Export ("filterArray")] NSArray filterArray { get; } [Export ("reloadData")] void ReloadData (); } [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKImageEditPanelDataSource { [Abstract] [Export ("image")] CGImage Image { get; } [Abstract] [Export ("setImage:imageProperties:")] void SetImageAndProperties (CGImage image, NSDictionary metaData); [Export ("thumbnailWithMaximumSize:")] CGImage GetThumbnail (CGSize maximumSize); [Export ("imageProperties")] NSDictionary ImageProperties { get; } [Export ("hasAdjustMode")] bool HasAdjustMode { get; } [Export ("hasEffectsMode")] bool HasEffectsMode { get; } [Export ("hasDetailsMode")] bool HasDetailsMode { get; } } [BaseType (typeof (NSView))] interface IKImageView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); //There is no protocol for this delegate. used to respond to messages in the responder chain [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject Delegate { get; set; } [Export ("zoomFactor")] nfloat ZoomFactor { get; set; } [Export ("rotationAngle")] nfloat RotationAngle { get; set; } [Export ("currentToolMode")] string CurrentToolMode { get; set; } [Export ("autoresizes")] bool Autoresizes { get; set; } [Export ("hasHorizontalScroller")] bool HasHorizontalScroller { get; set; } [Export ("hasVerticalScroller")] bool HasVerticalScroller { get; set; } [Export ("autohidesScrollers")] bool AutohidesScrollers { get; set; } [Export ("supportsDragAndDrop")] bool SupportsDragAndDrop { get; set; } [Export ("editable")] bool Editable { get; set; } [Export ("doubleClickOpensImageEditPanel")] bool DoubleClickOpensImageEditPanel { get; set; } [Export ("imageCorrection", ArgumentSemantic.Assign)] CIFilter ImageCorrection { get; set; } [Export ("backgroundColor", ArgumentSemantic.Assign)] NSColor BackgroundColor { get; set; } #if !XAMCORE_4_0 [Export ("setImage:imageProperties:")] void SetImageimageProperties (CGImage image, NSDictionary metaData); #else [Export ("setImage:imageProperties:")] void SetImage (CGImage image, NSDictionary metaData); #endif [Export ("setImageWithURL:")] void SetImageWithURL (NSUrl url); [Export ("image")] CGImage Image { get; } [Export ("imageSize")] CGSize ImageSize { get; } [Export ("imageProperties")] NSDictionary ImageProperties { get; } [Export ("setRotationAngle:centerPoint:")] void SetRotation (nfloat rotationAngle, CGPoint centerPoint); [Export ("rotateImageLeft:")] void RotateImageLeft (NSObject sender); [Export ("rotateImageRight:")] void RotateImageRight (NSObject sender); [Export ("setImageZoomFactor:centerPoint:")] void SetImageZoomFactor (nfloat zoomFactor, CGPoint centerPoint); [Export ("zoomImageToRect:")] void ZoomImageToRect (CGRect rect); [Export ("zoomImageToFit:")] void ZoomImageToFit (NSObject sender); [Export ("zoomImageToActualSize:")] void ZoomImageToActualSize (NSObject sender); [Export ("zoomIn:")] void ZoomIn (NSObject sender); [Export ("zoomOut:")] void ZoomOut (NSObject sender); [Export ("flipImageHorizontal:")] void FlipImageHorizontal (NSObject sender); [Export ("flipImageVertical:")] void FlipImageVertical (NSObject sender); [Export ("crop:")] void Crop (NSObject sender); [Export ("setOverlay:forType:")] void SetOverlay (CALayer layer, string layerType); [Export ("overlayForType:")] CALayer GetOverlay (string layerType); [Export ("scrollToPoint:")] void ScrollTo (CGPoint point); [Export ("scrollToRect:")] void ScrollTo (CGRect rect); [Export ("convertViewPointToImagePoint:")] CGPoint ConvertViewPointToImagePoint (CGPoint viewPoint); [Export ("convertViewRectToImageRect:")] CGRect ConvertViewRectToImageRect (CGRect viewRect); [Export ("convertImagePointToViewPoint:")] CGPoint ConvertImagePointToViewPoint (CGPoint imagePoint); [Export ("convertImageRectToViewRect:")] CGRect ConvertImageRectToViewRect (CGRect imageRect); } [BaseType (typeof (NSPanel))] interface IKPictureTaker { [Static] [Export ("pictureTaker")] IKPictureTaker SharedPictureTaker { get; } [Export ("runModal")] nint RunModal (); //FIXME - Yuck. What can I do to fix these three methods? [Export ("beginPictureTakerWithDelegate:didEndSelector:contextInfo:")] void BeginPictureTaker (NSObject aDelegate, Selector didEndSelector, IntPtr contextInfo); [Export ("beginPictureTakerSheetForWindow:withDelegate:didEndSelector:contextInfo:")] void BeginPictureTakerSheet (NSWindow aWindow, NSObject aDelegate, Selector didEndSelector, IntPtr contextInfo); [Export ("popUpRecentsMenuForView:withDelegate:didEndSelector:contextInfo:")] void PopUpRecentsMenu (NSView aView, NSObject aDelegate, Selector didEndSelector, IntPtr contextInfo); [Export ("inputImage")] NSImage InputImage { get; set; } [Export ("outputImage")] NSImage GetOutputImage (); [Export ("mirroring")] bool Mirroring { get; set; } //Use with NSKeyValueCoding to customize the pictureTaker panel [Field ("IKPictureTakerAllowsVideoCaptureKey")] NSString AllowsVideoCaptureKey { get; } [Field ("IKPictureTakerAllowsFileChoosingKey")] NSString AllowsFileChoosingKey { get; } [Field ("IKPictureTakerShowRecentPictureKey")] NSString ShowRecentPictureKey { get; } [Field ("IKPictureTakerUpdateRecentPictureKey")] NSString UpdateRecentPictureKey { get; } [Field ("IKPictureTakerAllowsEditingKey")] NSString AllowsEditingKey { get; } [Field ("IKPictureTakerShowEffectsKey")] NSString ShowEffectsKey { get; } [Field ("IKPictureTakerInformationalTextKey")] NSString InformationalTextKey { get; } [Field ("IKPictureTakerImageTransformsKey")] NSString ImageTransformsKey { get; } [Field ("IKPictureTakerOutputImageMaxSizeKey")] NSString OutputImageMaxSizeKey { get; } [Field ("IKPictureTakerCropAreaSizeKey")] NSString CropAreaSizeKey { get; } [Field ("IKPictureTakerShowAddressBookPictureKey")] NSString ShowAddressBookPictureKey { get; } [Field ("IKPictureTakerShowEmptyPictureKey")] NSString ShowEmptyPictureKey { get; } [Field ("IKPictureTakerRemainOpenAfterValidateKey")] NSString RemainOpenAfterValidateKey { get; } } [BaseType (typeof (NSObject), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (IKSaveOptionsDelegate)})] interface IKSaveOptions { [Export ("imageProperties")] NSDictionary ImageProperties { get; } [Export ("imageUTType")] string ImageUTType { get; } [Export ("userSelection")] NSDictionary UserSelection { get; } [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDelegate { get; set; } [Wrap ("WeakDelegate")] [Protocolize] IKSaveOptionsDelegate Delegate { get; set; } [Export ("initWithImageProperties:imageUTType:")] IntPtr Constructor (NSDictionary imageProperties, string imageUTType); [Export ("addSaveOptionsAccessoryViewToSavePanel:")] void AddSaveOptionsToPanel (NSSavePanel savePanel); [Export ("addSaveOptionsToView:")] void AddSaveOptionsToView (NSView view); } [BaseType (typeof (NSObject))] [Model] [Protocol (IsInformal = true)] interface IKSaveOptionsDelegate { [Export ("saveOptions:shouldShowUTType:"), DelegateName ("SaveOptionsShouldShowUTType"), DefaultValue (false)] bool ShouldShowType (IKSaveOptions saveOptions, string imageUTType); } [BaseType (typeof (NSView), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] { typeof (IKScannerDeviceViewDelegate)})] interface IKScannerDeviceView { [Export ("initWithFrame:")] IntPtr Constructor (CGRect frameRect); [Export ("delegate", ArgumentSemantic.Assign), NullAllowed] NSObject WeakDelegate { get; set; } [Wrap ("WeakDelegate")] [Protocolize] IKScannerDeviceViewDelegate Delegate { get; set; } [Export ("scannerDevice", ArgumentSemantic.Assign)] ICScannerDevice ScannerDevice { get; set; } [Export ("mode")] IKScannerDeviceViewDisplayMode DisplayMode { get; set; } [Export ("hasDisplayModeSimple")] bool HasDisplayModeSimple { get; set; } [Export ("hasDisplayModeAdvanced")] bool HasDisplayModeAdvanced { get; set; } [Export ("transferMode")] IKScannerDeviceViewTransferMode TransferMode { get; set; } [Export ("scanControlLabel", ArgumentSemantic.Copy)] string ScanControlLabel { get; set; } [Export ("overviewControlLabel", ArgumentSemantic.Copy)] string OverviewControlLabel { get; set; } [Export ("displaysDownloadsDirectoryControl")] bool DisplaysDownloadsDirectoryControl { get; set; } [Export ("downloadsDirectory", ArgumentSemantic.Retain)] NSUrl DownloadsDirectory { get; set; } [Export ("documentName", ArgumentSemantic.Copy)] string DocumentName { get; set; } [Export ("displaysPostProcessApplicationControl")] bool DisplaysPostProcessApplicationControl { get; set; } [Export ("postProcessApplication", ArgumentSemantic.Retain)] NSUrl PostProcessApplication { get; set; } } [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKScannerDeviceViewDelegate { [Export ("scannerDeviceView:didScanToURL:fileData:error:"), EventArgs ("IKScannerDeviceViewScan")] void DidScan (IKScannerDeviceView scannerDeviceView, NSUrl url, NSData data, NSError error); [Export ("scannerDeviceView:didEncounterError:"), EventArgs ("IKScannerDeviceViewError")] void DidEncounterError (IKScannerDeviceView scannerDeviceView, NSError error); [Export ("scannerDeviceView:didScanToURL:error:"), EventArgs ("IKScannerDeviceViewScanUrl")] void DidScanToUrl (IKScannerDeviceView scannerDeviceView, NSUrl url, NSError error); [Export ("scannerDeviceView:didScanToBandData:scanInfo:error:"), EventArgs ("IKScannerDeviceViewScanBandData")] void DidScanToBandData (IKScannerDeviceView scannerDeviceView, ICScannerBandData data, NSDictionary scanInfo, NSError error); } [BaseType (typeof (NSObject))] interface IKSlideshow { [Static] [Export ("sharedSlideshow")] IKSlideshow SharedSlideshow { get; } [Export ("autoPlayDelay")] double autoPlayDelay { get; set; } [Export ("runSlideshowWithDataSource:inMode:options:")] void RunSlideshow ([Protocolize] IKSlideshowDataSource dataSource, string slideshowMode, NSDictionary slideshowOptions); [Export ("stopSlideshow:")] void StopSlideshow (NSObject sender); [Export ("reloadData")] void ReloadData (); [Export ("reloadSlideshowItemAtIndex:")] void ReloadSlideshowItem (nint index); [Export ("indexOfCurrentSlideshowItem")] nint IndexOfCurrentSlideshowItem { get; } [Static] [Export ("canExportToApplication:")] bool CanExportToApplication (string applicationBundleIdentifier); [Static] [Export ("exportSlideshowItem:toApplication:")] void ExportSlideshowItemtoApplication (NSObject item, string applicationBundleIdentifier); [Field ("IKSlideshowModeImages")] NSString ModeImages { get; } [Field ("IKSlideshowModePDF")] NSString ModePDF { get; } [Field ("IKSlideshowModeOther")] NSString ModeOther { get; } [Field ("IKSlideshowWrapAround")] NSString WrapAround { get; } [Field ("IKSlideshowStartPaused")] NSString StartPaused { get; } [Field ("IKSlideshowStartIndex")] NSString StartIndex { get; } [Field ("IKSlideshowScreen")] NSString Screen { get; } [Field ("IKSlideshowAudioFile")] NSString AudioFile { get; } [Field ("IKSlideshowPDFDisplayBox")] NSString PDFDisplayBox { get; } [Field ("IKSlideshowPDFDisplayMode")] NSString PDFDisplayMode { get; } [Field ("IKSlideshowPDFDisplaysAsBook")] NSString PDFDisplaysAsBook { get; } [Field ("IK_iPhotoBundleIdentifier")] NSString IPhotoBundleIdentifier { get; } [Field ("IK_ApertureBundleIdentifier")] NSString ApertureBundleIdentifier { get; } [Field ("IK_MailBundleIdentifier")] NSString MailBundleIdentifier { get; } [Mac (10,10,3)] [Field ("IK_PhotosBundleIdentifier")] NSString PhotosBundleIdentifier { get; } } [BaseType (typeof (NSObject))] [Model] [Protocol] interface IKSlideshowDataSource { [Abstract] [Export ("numberOfSlideshowItems")] nint ItemCount { get; } [Abstract] [Export ("slideshowItemAtIndex:")] NSObject GetItemAt (nint index); [Export ("nameOfSlideshowItemAtIndex:")] string GetNameOfItemAt (nint index); [Export ("canExportSlideshowItemAtIndex:toApplication:")] bool CanExportItemToApplication (nint index, string applicationBundleIdentifier); [Export ("slideshowWillStart")] void WillStart (); [Export ("slideshowDidStop")] void DidStop (); [Export ("slideshowDidChangeCurrentIndex:")] void DidChange (nint newIndex); } }