396 lines
11 KiB
C#
396 lines
11 KiB
C#
using CPF.Mac.CoreGraphics;
|
|
using CPF.Mac.Foundation;
|
|
using CPF.Mac.ObjCRuntime;
|
|
using System;
|
|
using System.ComponentModel;
|
|
|
|
namespace CPF.Mac.AppKit
|
|
{
|
|
[Register("NSClipView", true)]
|
|
public class NSClipView : NSView
|
|
{
|
|
private static readonly IntPtr selBackgroundColorHandle = Selector.GetHandle("backgroundColor");
|
|
|
|
private static readonly IntPtr selSetBackgroundColor_Handle = Selector.GetHandle("setBackgroundColor:");
|
|
|
|
private static readonly IntPtr selDrawsBackgroundHandle = Selector.GetHandle("drawsBackground");
|
|
|
|
private static readonly IntPtr selSetDrawsBackground_Handle = Selector.GetHandle("setDrawsBackground:");
|
|
|
|
private static readonly IntPtr selDocumentViewHandle = Selector.GetHandle("documentView");
|
|
|
|
private static readonly IntPtr selSetDocumentView_Handle = Selector.GetHandle("setDocumentView:");
|
|
|
|
private static readonly IntPtr selDocumentRectHandle = Selector.GetHandle("documentRect");
|
|
|
|
private static readonly IntPtr selDocumentCursorHandle = Selector.GetHandle("documentCursor");
|
|
|
|
private static readonly IntPtr selSetDocumentCursor_Handle = Selector.GetHandle("setDocumentCursor:");
|
|
|
|
private static readonly IntPtr selCopiesOnScrollHandle = Selector.GetHandle("copiesOnScroll");
|
|
|
|
private static readonly IntPtr selSetCopiesOnScroll_Handle = Selector.GetHandle("setCopiesOnScroll:");
|
|
|
|
private static readonly IntPtr selInitWithFrame_Handle = Selector.GetHandle("initWithFrame:");
|
|
|
|
private static readonly IntPtr selDocumentVisibleRectHandle = Selector.GetHandle("documentVisibleRect");
|
|
|
|
private static readonly IntPtr selViewFrameChanged_Handle = Selector.GetHandle("viewFrameChanged:");
|
|
|
|
private static readonly IntPtr selViewBoundsChanged_Handle = Selector.GetHandle("viewBoundsChanged:");
|
|
|
|
private static readonly IntPtr selAutoscroll_Handle = Selector.GetHandle("autoscroll:");
|
|
|
|
private static readonly IntPtr selConstrainScrollPoint_Handle = Selector.GetHandle("constrainScrollPoint:");
|
|
|
|
private static readonly IntPtr selScrollToPoint_Handle = Selector.GetHandle("scrollToPoint:");
|
|
|
|
private static readonly IntPtr selScrollClipViewToPoint_Handle = Selector.GetHandle("scrollClipView:toPoint:");
|
|
|
|
private static readonly IntPtr class_ptr = Class.GetHandle("NSClipView");
|
|
|
|
private object __mt_BackgroundColor_var;
|
|
|
|
private object __mt_DocumentView_var;
|
|
|
|
private object __mt_DocumentCursor_var;
|
|
|
|
public override IntPtr ClassHandle => class_ptr;
|
|
|
|
public virtual NSColor BackgroundColor
|
|
{
|
|
[Export("backgroundColor")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
return (NSColor)(__mt_BackgroundColor_var = ((!IsDirectBinding) ? ((NSColor)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selBackgroundColorHandle))) : ((NSColor)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selBackgroundColorHandle)))));
|
|
}
|
|
[Export("setBackgroundColor:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException("value");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetBackgroundColor_Handle, value.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetBackgroundColor_Handle, value.Handle);
|
|
}
|
|
__mt_BackgroundColor_var = value;
|
|
}
|
|
}
|
|
|
|
public virtual bool DrawsBackground
|
|
{
|
|
[Export("drawsBackground")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend(base.Handle, selDrawsBackgroundHandle);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selDrawsBackgroundHandle);
|
|
}
|
|
[Export("setDrawsBackground:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_bool(base.Handle, selSetDrawsBackground_Handle, value);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetDrawsBackground_Handle, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
public virtual NSView DocumentView
|
|
{
|
|
[Export("documentView")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
return (NSView)(__mt_DocumentView_var = ((!IsDirectBinding) ? ((NSView)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selDocumentViewHandle))) : ((NSView)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selDocumentViewHandle)))));
|
|
}
|
|
[Export("setDocumentView:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException("value");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetDocumentView_Handle, value.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetDocumentView_Handle, value.Handle);
|
|
}
|
|
__mt_DocumentView_var = value;
|
|
}
|
|
}
|
|
|
|
public virtual CGRect DocumentRect
|
|
{
|
|
[Export("documentRect")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
CGRect retval;
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.CGRect_objc_msgSend_stret(out retval, base.Handle, selDocumentRectHandle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.CGRect_objc_msgSendSuper_stret(out retval, base.SuperHandle, selDocumentRectHandle);
|
|
}
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
public virtual NSCursor DocumentCursor
|
|
{
|
|
[Export("documentCursor")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
return (NSCursor)(__mt_DocumentCursor_var = ((!IsDirectBinding) ? ((NSCursor)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selDocumentCursorHandle))) : ((NSCursor)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selDocumentCursorHandle)))));
|
|
}
|
|
[Export("setDocumentCursor:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException("value");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selSetDocumentCursor_Handle, value.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selSetDocumentCursor_Handle, value.Handle);
|
|
}
|
|
__mt_DocumentCursor_var = value;
|
|
}
|
|
}
|
|
|
|
public virtual bool CopiesOnScroll
|
|
{
|
|
[Export("copiesOnScroll")]
|
|
get
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend(base.Handle, selCopiesOnScrollHandle);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selCopiesOnScrollHandle);
|
|
}
|
|
[Export("setCopiesOnScroll:")]
|
|
set
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_bool(base.Handle, selSetCopiesOnScroll_Handle, value);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetCopiesOnScroll_Handle, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
[Export("init")]
|
|
public NSClipView()
|
|
: 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 NSClipView(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 NSClipView(NSObjectFlag t)
|
|
: base(t)
|
|
{
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public NSClipView(IntPtr handle)
|
|
: base(handle)
|
|
{
|
|
}
|
|
|
|
[Export("initWithFrame:")]
|
|
public NSClipView(CGRect frameRect)
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend_CGRect(base.Handle, selInitWithFrame_Handle, frameRect);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper_CGRect(base.SuperHandle, selInitWithFrame_Handle, frameRect);
|
|
}
|
|
}
|
|
|
|
[Export("documentVisibleRect")]
|
|
public virtual CGRect DocumentVisibleRect()
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
CGRect retval;
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.CGRect_objc_msgSend_stret(out retval, base.Handle, selDocumentVisibleRectHandle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.CGRect_objc_msgSendSuper_stret(out retval, base.SuperHandle, selDocumentVisibleRectHandle);
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
[Export("viewFrameChanged:")]
|
|
public virtual void ViewFrameChanged(NSNotification notification)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (notification == null)
|
|
{
|
|
throw new ArgumentNullException("notification");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selViewFrameChanged_Handle, notification.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selViewFrameChanged_Handle, notification.Handle);
|
|
}
|
|
}
|
|
|
|
[Export("viewBoundsChanged:")]
|
|
public virtual void ViewBoundsChanged(NSNotification notification)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (notification == null)
|
|
{
|
|
throw new ArgumentNullException("notification");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr(base.Handle, selViewBoundsChanged_Handle, notification.Handle);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr(base.SuperHandle, selViewBoundsChanged_Handle, notification.Handle);
|
|
}
|
|
}
|
|
|
|
[Export("autoscroll:")]
|
|
public new virtual bool Autoscroll(NSEvent theEvent)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (theEvent == null)
|
|
{
|
|
throw new ArgumentNullException("theEvent");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend_IntPtr(base.Handle, selAutoscroll_Handle, theEvent.Handle);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper_IntPtr(base.SuperHandle, selAutoscroll_Handle, theEvent.Handle);
|
|
}
|
|
|
|
[Export("constrainScrollPoint:")]
|
|
public virtual CGPoint ConstrainScrollPoint(CGPoint newOrigin)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.CGPoint_objc_msgSend_CGPoint(base.Handle, selConstrainScrollPoint_Handle, newOrigin);
|
|
}
|
|
return Messaging.CGPoint_objc_msgSendSuper_CGPoint(base.SuperHandle, selConstrainScrollPoint_Handle, newOrigin);
|
|
}
|
|
|
|
[Export("scrollToPoint:")]
|
|
public virtual void ScrollToPoint(CGPoint newOrigin)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_CGPoint(base.Handle, selScrollToPoint_Handle, newOrigin);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_CGPoint(base.SuperHandle, selScrollToPoint_Handle, newOrigin);
|
|
}
|
|
}
|
|
|
|
[Export("scrollClipView:toPoint:")]
|
|
public virtual void ScrollClipView(NSClipView aClipView, CGPoint aPoint)
|
|
{
|
|
NSApplication.EnsureUIThread();
|
|
if (aClipView == null)
|
|
{
|
|
throw new ArgumentNullException("aClipView");
|
|
}
|
|
if (IsDirectBinding)
|
|
{
|
|
Messaging.void_objc_msgSend_IntPtr_CGPoint(base.Handle, selScrollClipViewToPoint_Handle, aClipView.Handle, aPoint);
|
|
}
|
|
else
|
|
{
|
|
Messaging.void_objc_msgSendSuper_IntPtr_CGPoint(base.SuperHandle, selScrollClipViewToPoint_Handle, aClipView.Handle, aPoint);
|
|
}
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
base.Dispose(disposing);
|
|
if (base.Handle == IntPtr.Zero)
|
|
{
|
|
__mt_BackgroundColor_var = null;
|
|
__mt_DocumentView_var = null;
|
|
__mt_DocumentCursor_var = null;
|
|
}
|
|
}
|
|
}
|
|
}
|