CPF/CPF.Mac/Mac/AppKit/NSTextTable.cs
2023-11-21 23:05:03 +08:00

263 lines
8.5 KiB
C#

using CPF.Mac.CoreGraphics;
using CPF.Mac.Foundation;
using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
namespace CPF.Mac.AppKit
{
[Register("NSTextTable", true)]
public class NSTextTable : NSTextBlock
{
private static readonly IntPtr selNumberOfColumnsHandle = Selector.GetHandle("numberOfColumns");
private static readonly IntPtr selSetNumberOfColumns_Handle = Selector.GetHandle("setNumberOfColumns:");
private static readonly IntPtr selLayoutAlgorithmHandle = Selector.GetHandle("layoutAlgorithm");
private static readonly IntPtr selSetLayoutAlgorithm_Handle = Selector.GetHandle("setLayoutAlgorithm:");
private static readonly IntPtr selCollapsesBordersHandle = Selector.GetHandle("collapsesBorders");
private static readonly IntPtr selSetCollapsesBorders_Handle = Selector.GetHandle("setCollapsesBorders:");
private static readonly IntPtr selHidesEmptyCellsHandle = Selector.GetHandle("hidesEmptyCells");
private static readonly IntPtr selSetHidesEmptyCells_Handle = Selector.GetHandle("setHidesEmptyCells:");
private static readonly IntPtr selRectForBlockLayoutAtPointInRectTextContainerCharacterRange_Handle = Selector.GetHandle("rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:");
private static readonly IntPtr selBoundsRectForBlockContentRectInRectTextContainerCharacterRange_Handle = Selector.GetHandle("boundsRectForBlock:contentRect:inRect:textContainer:characterRange:");
private static readonly IntPtr selDrawBackgroundForBlockWithFrameInViewCharacterRangeLayoutManager_Handle = Selector.GetHandle("drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:");
private static readonly IntPtr class_ptr = Class.GetHandle("NSTextTable");
public override IntPtr ClassHandle => class_ptr;
public virtual long Columns
{
[Export("numberOfColumns")]
get
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Messaging.Int64_objc_msgSend(base.Handle, selNumberOfColumnsHandle);
}
return Messaging.Int64_objc_msgSendSuper(base.SuperHandle, selNumberOfColumnsHandle);
}
[Export("setNumberOfColumns:")]
set
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_Int64(base.Handle, selSetNumberOfColumns_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_Int64(base.SuperHandle, selSetNumberOfColumns_Handle, value);
}
}
}
public virtual NSTextTableLayoutAlgorithm LayoutAlgorithm
{
[Export("layoutAlgorithm")]
get
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return (NSTextTableLayoutAlgorithm)Messaging.UInt64_objc_msgSend(base.Handle, selLayoutAlgorithmHandle);
}
return (NSTextTableLayoutAlgorithm)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selLayoutAlgorithmHandle);
}
[Export("setLayoutAlgorithm:")]
set
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_UInt64(base.Handle, selSetLayoutAlgorithm_Handle, (ulong)value);
}
else
{
Messaging.void_objc_msgSendSuper_UInt64(base.SuperHandle, selSetLayoutAlgorithm_Handle, (ulong)value);
}
}
}
public virtual bool CollapsesBorders
{
[Export("collapsesBorders")]
get
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Messaging.bool_objc_msgSend(base.Handle, selCollapsesBordersHandle);
}
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selCollapsesBordersHandle);
}
[Export("setCollapsesBorders:")]
set
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_bool(base.Handle, selSetCollapsesBorders_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetCollapsesBorders_Handle, value);
}
}
}
public virtual bool HidesEmptyCells
{
[Export("hidesEmptyCells")]
get
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
return Messaging.bool_objc_msgSend(base.Handle, selHidesEmptyCellsHandle);
}
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selHidesEmptyCellsHandle);
}
[Export("setHidesEmptyCells:")]
set
{
NSApplication.EnsureUIThread();
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_bool(base.Handle, selSetHidesEmptyCells_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetHidesEmptyCells_Handle, value);
}
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSTextTable()
: 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 NSTextTable(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 NSTextTable(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSTextTable(IntPtr handle)
: base(handle)
{
}
[Export("rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:")]
public virtual CGRect GetRectForBlock(NSTextTableBlock block, CGPoint startingPoint, CGRect rect, NSTextContainer textContainer, NSRange charRange)
{
NSApplication.EnsureUIThread();
if (block == null)
{
throw new ArgumentNullException("block");
}
if (textContainer == null)
{
throw new ArgumentNullException("textContainer");
}
CGRect retval;
if (IsDirectBinding)
{
Messaging.CGRect_objc_msgSend_stret_IntPtr_CGPoint_CGRect_IntPtr_NSRange(out retval, base.Handle, selRectForBlockLayoutAtPointInRectTextContainerCharacterRange_Handle, block.Handle, startingPoint, rect, textContainer.Handle, charRange);
}
else
{
Messaging.CGRect_objc_msgSendSuper_stret_IntPtr_CGPoint_CGRect_IntPtr_NSRange(out retval, base.SuperHandle, selRectForBlockLayoutAtPointInRectTextContainerCharacterRange_Handle, block.Handle, startingPoint, rect, textContainer.Handle, charRange);
}
return retval;
}
[Export("boundsRectForBlock:contentRect:inRect:textContainer:characterRange:")]
public virtual CGRect GetBoundsRect(NSTextTableBlock block, CGRect contentRect, CGRect rect, NSTextContainer textContainer, NSRange charRange)
{
NSApplication.EnsureUIThread();
if (block == null)
{
throw new ArgumentNullException("block");
}
if (textContainer == null)
{
throw new ArgumentNullException("textContainer");
}
CGRect retval;
if (IsDirectBinding)
{
Messaging.CGRect_objc_msgSend_stret_IntPtr_CGRect_CGRect_IntPtr_NSRange(out retval, base.Handle, selBoundsRectForBlockContentRectInRectTextContainerCharacterRange_Handle, block.Handle, contentRect, rect, textContainer.Handle, charRange);
}
else
{
Messaging.CGRect_objc_msgSendSuper_stret_IntPtr_CGRect_CGRect_IntPtr_NSRange(out retval, base.SuperHandle, selBoundsRectForBlockContentRectInRectTextContainerCharacterRange_Handle, block.Handle, contentRect, rect, textContainer.Handle, charRange);
}
return retval;
}
[Export("drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:")]
public virtual void DrawBackground(NSTextTableBlock block, CGRect frameRect, NSView controlView, NSRange charRange, NSLayoutManager layoutManager)
{
NSApplication.EnsureUIThread();
if (block == null)
{
throw new ArgumentNullException("block");
}
if (controlView == null)
{
throw new ArgumentNullException("controlView");
}
if (layoutManager == null)
{
throw new ArgumentNullException("layoutManager");
}
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr_CGRect_IntPtr_NSRange_IntPtr(base.Handle, selDrawBackgroundForBlockWithFrameInViewCharacterRangeLayoutManager_Handle, block.Handle, frameRect, controlView.Handle, charRange, layoutManager.Handle);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr_CGRect_IntPtr_NSRange_IntPtr(base.SuperHandle, selDrawBackgroundForBlockWithFrameInViewCharacterRangeLayoutManager_Handle, block.Handle, frameRect, controlView.Handle, charRange, layoutManager.Handle);
}
}
}
}