using CPF.Mac.CoreGraphics; using CPF.Mac.Foundation; using CPF.Mac.ObjCRuntime; using System; using System.ComponentModel; namespace CPF.Mac.AppKit { [Register("NSRulerMarker", true)] public class NSRulerMarker : NSObject { private static readonly IntPtr selRulerHandle = Selector.GetHandle("ruler"); private static readonly IntPtr selIsDraggingHandle = Selector.GetHandle("isDragging"); private static readonly IntPtr selImageRectInRulerHandle = Selector.GetHandle("imageRectInRuler"); private static readonly IntPtr selThicknessRequiredInRulerHandle = Selector.GetHandle("thicknessRequiredInRuler"); private static readonly IntPtr selMarkerLocationHandle = Selector.GetHandle("markerLocation"); private static readonly IntPtr selSetMarkerLocation_Handle = Selector.GetHandle("setMarkerLocation:"); private static readonly IntPtr selImageHandle = Selector.GetHandle("image"); private static readonly IntPtr selSetImage_Handle = Selector.GetHandle("setImage:"); private static readonly IntPtr selImageOriginHandle = Selector.GetHandle("imageOrigin"); private static readonly IntPtr selSetImageOrigin_Handle = Selector.GetHandle("setImageOrigin:"); private static readonly IntPtr selIsMovableHandle = Selector.GetHandle("isMovable"); private static readonly IntPtr selSetMovable_Handle = Selector.GetHandle("setMovable:"); private static readonly IntPtr selIsRemovableHandle = Selector.GetHandle("isRemovable"); private static readonly IntPtr selSetRemovable_Handle = Selector.GetHandle("setRemovable:"); private static readonly IntPtr selRepresentedObjectHandle = Selector.GetHandle("representedObject"); private static readonly IntPtr selSetRepresentedObject_Handle = Selector.GetHandle("setRepresentedObject:"); private static readonly IntPtr selInitWithRulerViewMarkerLocationImageImageOrigin_Handle = Selector.GetHandle("initWithRulerView:markerLocation:image:imageOrigin:"); private static readonly IntPtr selDrawRect_Handle = Selector.GetHandle("drawRect:"); private static readonly IntPtr selTrackMouseAdding_Handle = Selector.GetHandle("trackMouse:adding:"); private static readonly IntPtr class_ptr = Class.GetHandle("NSRulerMarker"); private object __mt_Ruler_var; private object __mt_Image_var; private object __mt_RepresentedObject_var; public override IntPtr ClassHandle => class_ptr; public virtual NSRulerView Ruler { [Export("ruler")] get { NSApplication.EnsureUIThread(); return (NSRulerView)(__mt_Ruler_var = ((!IsDirectBinding) ? ((NSRulerView)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selRulerHandle))) : ((NSRulerView)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selRulerHandle))))); } } public virtual bool IsDragging { [Export("isDragging")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.bool_objc_msgSend(base.Handle, selIsDraggingHandle); } return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsDraggingHandle); } } public virtual CGRect ImageRectInRuler { [Export("imageRectInRuler")] get { NSApplication.EnsureUIThread(); CGRect retval; if (IsDirectBinding) { Messaging.CGRect_objc_msgSend_stret(out retval, base.Handle, selImageRectInRulerHandle); } else { Messaging.CGRect_objc_msgSendSuper_stret(out retval, base.SuperHandle, selImageRectInRulerHandle); } return retval; } } public virtual double ThicknessRequiredInRuler { [Export("thicknessRequiredInRuler")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.Double_objc_msgSend(base.Handle, selThicknessRequiredInRulerHandle); } return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selThicknessRequiredInRulerHandle); } } public virtual double MarkerLocation { [Export("markerLocation")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.Double_objc_msgSend(base.Handle, selMarkerLocationHandle); } return Messaging.Double_objc_msgSendSuper(base.SuperHandle, selMarkerLocationHandle); } [Export("setMarkerLocation:")] set { NSApplication.EnsureUIThread(); if (IsDirectBinding) { Messaging.void_objc_msgSend_Double(base.Handle, selSetMarkerLocation_Handle, value); } else { Messaging.void_objc_msgSendSuper_Double(base.SuperHandle, selSetMarkerLocation_Handle, value); } } } public virtual NSImage Image { [Export("image")] get { NSApplication.EnsureUIThread(); return (NSImage)(__mt_Image_var = ((!IsDirectBinding) ? ((NSImage)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selImageHandle))) : ((NSImage)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selImageHandle))))); } [Export("setImage:")] set { NSApplication.EnsureUIThread(); if (value == null) { throw new ArgumentNullException("value"); } if (IsDirectBinding) { Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetImage_Handle, value.Handle); } else { Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetImage_Handle, value.Handle); } __mt_Image_var = value; } } public virtual CGPoint ImageOrigin { [Export("imageOrigin")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.CGPoint_objc_msgSend(base.Handle, selImageOriginHandle); } return Messaging.CGPoint_objc_msgSendSuper(base.SuperHandle, selImageOriginHandle); } [Export("setImageOrigin:")] set { NSApplication.EnsureUIThread(); if (IsDirectBinding) { Messaging.void_objc_msgSend_CGPoint(base.Handle, selSetImageOrigin_Handle, value); } else { Messaging.void_objc_msgSendSuper_CGPoint(base.SuperHandle, selSetImageOrigin_Handle, value); } } } public virtual bool Movable { [Export("isMovable")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.bool_objc_msgSend(base.Handle, selIsMovableHandle); } return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsMovableHandle); } [Export("setMovable:")] set { NSApplication.EnsureUIThread(); if (IsDirectBinding) { Messaging.void_objc_msgSend_bool(base.Handle, selSetMovable_Handle, value); } else { Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetMovable_Handle, value); } } } public virtual bool Removable { [Export("isRemovable")] get { NSApplication.EnsureUIThread(); if (IsDirectBinding) { return Messaging.bool_objc_msgSend(base.Handle, selIsRemovableHandle); } return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selIsRemovableHandle); } [Export("setRemovable:")] set { NSApplication.EnsureUIThread(); if (IsDirectBinding) { Messaging.void_objc_msgSend_bool(base.Handle, selSetRemovable_Handle, value); } else { Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetRemovable_Handle, value); } } } public virtual NSObject RepresentedObject { [Export("representedObject")] get { NSApplication.EnsureUIThread(); return (NSObject)(__mt_RepresentedObject_var = ((!IsDirectBinding) ? Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selRepresentedObjectHandle)) : Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selRepresentedObjectHandle)))); } [Export("setRepresentedObject:")] set { NSApplication.EnsureUIThread(); if (value == null) { throw new ArgumentNullException("value"); } if (IsDirectBinding) { Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetRepresentedObject_Handle, value.Handle); } else { Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetRepresentedObject_Handle, value.Handle); } __mt_RepresentedObject_var = value; } } [EditorBrowsable(EditorBrowsableState.Advanced)] [Export("init")] public NSRulerMarker() : base(NSObjectFlag.Empty) { if (IsDirectBinding) { base.Handle = Messaging.IntPtr_objc_msgSend(base.Handle, Selector.Init); } else { base.Handle = Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.Init); } } [EditorBrowsable(EditorBrowsableState.Advanced)] [Export("initWithCoder:")] public NSRulerMarker(NSCoder coder) : base(NSObjectFlag.Empty) { if (IsDirectBinding) { base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle); } else { base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle); } } [EditorBrowsable(EditorBrowsableState.Advanced)] public NSRulerMarker(NSObjectFlag t) : base(t) { } [EditorBrowsable(EditorBrowsableState.Advanced)] public NSRulerMarker(IntPtr handle) : base(handle) { } [Export("initWithRulerView:markerLocation:image:imageOrigin:")] public NSRulerMarker(NSRulerView ruler, double location, NSImage image, CGPoint imageOrigin) : base(NSObjectFlag.Empty) { NSApplication.EnsureUIThread(); if (ruler == null) { throw new ArgumentNullException("ruler"); } if (image == null) { throw new ArgumentNullException("image"); } if (IsDirectBinding) { base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_Double_IntPtr_CGPoint(base.Handle, selInitWithRulerViewMarkerLocationImageImageOrigin_Handle, ruler.Handle, location, image.Handle, imageOrigin); } else { base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_Double_IntPtr_CGPoint(base.SuperHandle, selInitWithRulerViewMarkerLocationImageImageOrigin_Handle, ruler.Handle, location, image.Handle, imageOrigin); } } [Export("drawRect:")] public virtual void DrawRect(CGRect rect) { NSApplication.EnsureUIThread(); if (IsDirectBinding) { Messaging.void_objc_msgSend_CGRect(base.Handle, selDrawRect_Handle, rect); } else { Messaging.void_objc_msgSendSuper_CGRect(base.SuperHandle, selDrawRect_Handle, rect); } } [Export("trackMouse:adding:")] public virtual bool TrackMouse(NSEvent mouseDownEvent, bool isAdding) { NSApplication.EnsureUIThread(); if (mouseDownEvent == null) { throw new ArgumentNullException("mouseDownEvent"); } if (IsDirectBinding) { return Messaging.bool_objc_msgSend_IntPtr_bool(base.Handle, selTrackMouseAdding_Handle, mouseDownEvent.Handle, isAdding); } return Messaging.bool_objc_msgSendSuper_IntPtr_bool(base.SuperHandle, selTrackMouseAdding_Handle, mouseDownEvent.Handle, isAdding); } protected override void Dispose(bool disposing) { base.Dispose(disposing); if (base.Handle == IntPtr.Zero) { __mt_Ruler_var = null; __mt_Image_var = null; __mt_RepresentedObject_var = null; } } } }