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

844 lines
26 KiB
C#

using CPF.Mac.CoreGraphics;
using CPF.Mac.CoreText;
using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace CPF.Mac.Foundation
{
[Register("NSAttributedString", true)]
public class NSAttributedString : NSObject
{
private static readonly IntPtr selStringHandle = Selector.GetHandle("string");
private static readonly IntPtr selLengthHandle = Selector.GetHandle("length");
private static readonly IntPtr selSizeHandle = Selector.GetHandle("size");
private static readonly IntPtr selAttributesAtIndexEffectiveRange_Handle = Selector.GetHandle("attributesAtIndex:effectiveRange:");
private static readonly IntPtr selAttributeAtIndexEffectiveRange_Handle = Selector.GetHandle("attribute:atIndex:effectiveRange:");
private static readonly IntPtr selAttributedSubstringFromRange_Handle = Selector.GetHandle("attributedSubstringFromRange:");
private static readonly IntPtr selAttributesAtIndexLongestEffectiveRangeInRange_Handle = Selector.GetHandle("attributesAtIndex:longestEffectiveRange:inRange:");
private static readonly IntPtr selAttributeAtIndexLongestEffectiveRangeInRange_Handle = Selector.GetHandle("attribute:atIndex:longestEffectiveRange:inRange:");
private static readonly IntPtr selIsEqualToAttributedString_Handle = Selector.GetHandle("isEqualToAttributedString:");
private static readonly IntPtr selInitWithString_Handle = Selector.GetHandle("initWithString:");
private static readonly IntPtr selInitWithStringAttributes_Handle = Selector.GetHandle("initWithString:attributes:");
private static readonly IntPtr selInitWithAttributedString_Handle = Selector.GetHandle("initWithAttributedString:");
private static readonly IntPtr selEnumerateAttributesInRangeOptionsUsingBlock_Handle = Selector.GetHandle("enumerateAttributesInRange:options:usingBlock:");
private static readonly IntPtr selEnumerateAttributeInRangeOptionsUsingBlock_Handle = Selector.GetHandle("enumerateAttribute:inRange:options:usingBlock:");
private static readonly IntPtr selInitWithDataOptionsDocumentAttributesError_Handle = Selector.GetHandle("initWithData:options:documentAttributes:error:");
private static readonly IntPtr selInitWithDocFormatDocumentAttributes_Handle = Selector.GetHandle("initWithDocFormat:documentAttributes:");
private static readonly IntPtr selInitWithHTMLBaseURLDocumentAttributes_Handle = Selector.GetHandle("initWithHTML:baseURL:documentAttributes:");
private static readonly IntPtr selDrawAtPoint_Handle = Selector.GetHandle("drawAtPoint:");
private static readonly IntPtr selDrawInRect_Handle = Selector.GetHandle("drawInRect:");
private static readonly IntPtr selDrawWithRectOptions_Handle = Selector.GetHandle("drawWithRect:options:");
private static readonly IntPtr class_ptr = Class.GetHandle("NSAttributedString");
private static NSString _FontAttributeName;
private static NSString _LinkAttributeName;
private static NSString _UnderlineStyleAttributeName;
private static NSString _StrikethroughStyleAttributeName;
private static NSString _StrokeWidthAttributeName;
private static NSString _ParagraphStyleAttributeName;
private static NSString _ForegroundColorAttributeName;
private static NSString _BackgroundColorAttributeName;
private static NSString _LigatureAttributeName;
private static NSString _ObliquenessAttributeName;
private static NSString _SuperscriptAttributeName;
private static NSString _AttachmentAttributeName;
private static NSString _BaselineOffsetAttributeName;
private static NSString _KernAttributeName;
private static NSString _StrokeColorAttributeName;
private static NSString _UnderlineColorAttributeName;
private static NSString _StrikethroughColorAttributeName;
private static NSString _ShadowAttributeName;
private static NSString _ExpansionAttributeName;
private static NSString _CursorAttributeName;
private static NSString _GlyphInfo;
private static NSString _ToolTipAttributeName;
private static NSString _MarkedClauseSegmentAttributeName;
private static NSString _WritingDirectionAttributeName;
private static NSString _VerticalGlyphFormAttributeName;
public override IntPtr ClassHandle => class_ptr;
public virtual string Value
{
[Export("string")]
get
{
if (IsDirectBinding)
{
return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selStringHandle));
}
return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selStringHandle));
}
}
public virtual ulong Length
{
[Export("length")]
get
{
if (IsDirectBinding)
{
return Messaging.UInt64_objc_msgSend(base.Handle, selLengthHandle);
}
return Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selLengthHandle);
}
}
public virtual CGSize Size
{
[Export("size")]
get
{
if (IsDirectBinding)
{
return Messaging.CGSize_objc_msgSend(base.Handle, selSizeHandle);
}
return Messaging.CGSize_objc_msgSendSuper(base.SuperHandle, selSizeHandle);
}
}
[Field("NSFontAttributeName", "AppKit")]
public static NSString FontAttributeName
{
get
{
if (_FontAttributeName == null)
{
_FontAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSFontAttributeName");
}
return _FontAttributeName;
}
}
[Field("NSLinkAttributeName", "AppKit")]
public static NSString LinkAttributeName
{
get
{
if (_LinkAttributeName == null)
{
_LinkAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSLinkAttributeName");
}
return _LinkAttributeName;
}
}
[Field("NSUnderlineStyleAttributeName", "AppKit")]
public static NSString UnderlineStyleAttributeName
{
get
{
if (_UnderlineStyleAttributeName == null)
{
_UnderlineStyleAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSUnderlineStyleAttributeName");
}
return _UnderlineStyleAttributeName;
}
}
[Field("NSStrikethroughStyleAttributeName", "AppKit")]
public static NSString StrikethroughStyleAttributeName
{
get
{
if (_StrikethroughStyleAttributeName == null)
{
_StrikethroughStyleAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSStrikethroughStyleAttributeName");
}
return _StrikethroughStyleAttributeName;
}
}
[Field("NSStrokeWidthAttributeName", "AppKit")]
public static NSString StrokeWidthAttributeName
{
get
{
if (_StrokeWidthAttributeName == null)
{
_StrokeWidthAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSStrokeWidthAttributeName");
}
return _StrokeWidthAttributeName;
}
}
[Field("NSParagraphStyleAttributeName", "AppKit")]
public static NSString ParagraphStyleAttributeName
{
get
{
if (_ParagraphStyleAttributeName == null)
{
_ParagraphStyleAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSParagraphStyleAttributeName");
}
return _ParagraphStyleAttributeName;
}
}
[Field("NSForegroundColorAttributeName", "AppKit")]
public static NSString ForegroundColorAttributeName
{
get
{
if (_ForegroundColorAttributeName == null)
{
_ForegroundColorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSForegroundColorAttributeName");
}
return _ForegroundColorAttributeName;
}
}
[Field("NSBackgroundColorAttributeName", "AppKit")]
public static NSString BackgroundColorAttributeName
{
get
{
if (_BackgroundColorAttributeName == null)
{
_BackgroundColorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSBackgroundColorAttributeName");
}
return _BackgroundColorAttributeName;
}
}
[Field("NSLigatureAttributeName", "AppKit")]
public static NSString LigatureAttributeName
{
get
{
if (_LigatureAttributeName == null)
{
_LigatureAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSLigatureAttributeName");
}
return _LigatureAttributeName;
}
}
[Field("NSObliquenessAttributeName", "AppKit")]
public static NSString ObliquenessAttributeName
{
get
{
if (_ObliquenessAttributeName == null)
{
_ObliquenessAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSObliquenessAttributeName");
}
return _ObliquenessAttributeName;
}
}
[Field("NSSuperscriptAttributeName", "AppKit")]
public static NSString SuperscriptAttributeName
{
get
{
if (_SuperscriptAttributeName == null)
{
_SuperscriptAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSSuperscriptAttributeName");
}
return _SuperscriptAttributeName;
}
}
[Field("NSAttachmentAttributeName", "AppKit")]
public static NSString AttachmentAttributeName
{
get
{
if (_AttachmentAttributeName == null)
{
_AttachmentAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSAttachmentAttributeName");
}
return _AttachmentAttributeName;
}
}
[Field("NSBaselineOffsetAttributeName", "AppKit")]
public static NSString BaselineOffsetAttributeName
{
get
{
if (_BaselineOffsetAttributeName == null)
{
_BaselineOffsetAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSBaselineOffsetAttributeName");
}
return _BaselineOffsetAttributeName;
}
}
[Field("NSKernAttributeName", "AppKit")]
public static NSString KernAttributeName
{
get
{
if (_KernAttributeName == null)
{
_KernAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSKernAttributeName");
}
return _KernAttributeName;
}
}
[Field("NSStrokeColorAttributeName", "AppKit")]
public static NSString StrokeColorAttributeName
{
get
{
if (_StrokeColorAttributeName == null)
{
_StrokeColorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSStrokeColorAttributeName");
}
return _StrokeColorAttributeName;
}
}
[Field("NSUnderlineColorAttributeName", "AppKit")]
public static NSString UnderlineColorAttributeName
{
get
{
if (_UnderlineColorAttributeName == null)
{
_UnderlineColorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSUnderlineColorAttributeName");
}
return _UnderlineColorAttributeName;
}
}
[Field("NSStrikethroughColorAttributeName", "AppKit")]
public static NSString StrikethroughColorAttributeName
{
get
{
if (_StrikethroughColorAttributeName == null)
{
_StrikethroughColorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSStrikethroughColorAttributeName");
}
return _StrikethroughColorAttributeName;
}
}
[Field("NSShadowAttributeName", "AppKit")]
public static NSString ShadowAttributeName
{
get
{
if (_ShadowAttributeName == null)
{
_ShadowAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSShadowAttributeName");
}
return _ShadowAttributeName;
}
}
[Field("NSExpansionAttributeName", "AppKit")]
public static NSString ExpansionAttributeName
{
get
{
if (_ExpansionAttributeName == null)
{
_ExpansionAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSExpansionAttributeName");
}
return _ExpansionAttributeName;
}
}
[Field("NSCursorAttributeName", "AppKit")]
public static NSString CursorAttributeName
{
get
{
if (_CursorAttributeName == null)
{
_CursorAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSCursorAttributeName");
}
return _CursorAttributeName;
}
}
[Field("NSToolTipAttributeName", "AppKit")]
public static NSString ToolTipAttributeName
{
get
{
if (_ToolTipAttributeName == null)
{
_ToolTipAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSToolTipAttributeName");
}
return _ToolTipAttributeName;
}
}
[Field("NSGlyphInfoAttributeName", "AppKit")]
public static NSString GlyphInfo
{
get
{
if (_GlyphInfo == null)
{
_GlyphInfo = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSGlyphInfoAttributeName");
}
return _GlyphInfo;
}
}
[Field("NSMarkedClauseSegmentAttributeName", "AppKit")]
public static NSString MarkedClauseSegmentAttributeName
{
get
{
if (_MarkedClauseSegmentAttributeName == null)
{
_MarkedClauseSegmentAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSMarkedClauseSegmentAttributeName");
}
return _MarkedClauseSegmentAttributeName;
}
}
[Field("NSWritingDirectionAttributeName", "AppKit")]
public static NSString WritingDirectionAttributeName
{
get
{
if (_WritingDirectionAttributeName == null)
{
_WritingDirectionAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSWritingDirectionAttributeName");
}
return _WritingDirectionAttributeName;
}
}
[Field("NSVerticalGlyphFormAttributeName", "AppKit")]
public static NSString VerticalGlyphFormAttributeName
{
get
{
if (_VerticalGlyphFormAttributeName == null)
{
_VerticalGlyphFormAttributeName = Dlfcn.GetStringConstant(Libraries.AppKit.Handle, "NSVerticalGlyphFormAttributeName");
}
return _VerticalGlyphFormAttributeName;
}
}
public NSAttributedString(string str, CTStringAttributes attributes)
: this(str, attributes?.Dictionary)
{
}
public CTStringAttributes GetCoreTextAttributes(ulong location, out NSRange effectiveRange)
{
NSDictionary attributes = GetAttributes(location, out effectiveRange);
if (attributes != null)
{
return new CTStringAttributes(attributes);
}
return null;
}
public CTStringAttributes GetCoreTextAttributes(ulong location, out NSRange longestEffectiveRange, NSRange rangeLimit)
{
NSDictionary attributes = GetAttributes(location, out longestEffectiveRange, rangeLimit);
if (attributes != null)
{
return new CTStringAttributes(attributes);
}
return null;
}
public NSAttributedString Substring(int start, int len)
{
return Substring(new NSRange(start, len));
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSAttributedString()
: 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 NSAttributedString(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 NSAttributedString(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSAttributedString(IntPtr handle)
: base(handle)
{
}
[Export("attributesAtIndex:effectiveRange:")]
public virtual NSDictionary GetAttributes(ulong location, out NSRange effectiveRange)
{
if (IsDirectBinding)
{
return (NSDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_UInt64_out_NSRange(base.Handle, selAttributesAtIndexEffectiveRange_Handle, location, out effectiveRange));
}
return (NSDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_UInt64_out_NSRange(base.SuperHandle, selAttributesAtIndexEffectiveRange_Handle, location, out effectiveRange));
}
[Export("attribute:atIndex:effectiveRange:")]
public virtual NSObject GetAttribute(string attribute, ulong location, out NSRange effectiveRange)
{
if (attribute == null)
{
throw new ArgumentNullException("attribute");
}
IntPtr intPtr = NSString.CreateNative(attribute);
NSObject result = (!IsDirectBinding) ? Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr_UInt64_out_NSRange(base.SuperHandle, selAttributeAtIndexEffectiveRange_Handle, intPtr, location, out effectiveRange)) : Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_UInt64_out_NSRange(base.Handle, selAttributeAtIndexEffectiveRange_Handle, intPtr, location, out effectiveRange));
NSString.ReleaseNative(intPtr);
return result;
}
[Export("attributedSubstringFromRange:")]
internal virtual NSAttributedString Substring(NSRange range)
{
if (IsDirectBinding)
{
return (NSAttributedString)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_NSRange(base.Handle, selAttributedSubstringFromRange_Handle, range));
}
return (NSAttributedString)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_NSRange(base.SuperHandle, selAttributedSubstringFromRange_Handle, range));
}
[Export("attributesAtIndex:longestEffectiveRange:inRange:")]
public virtual NSDictionary GetAttributes(ulong location, out NSRange longestEffectiveRange, NSRange rangeLimit)
{
if (IsDirectBinding)
{
return (NSDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_UInt64_out_NSRange_NSRange(base.Handle, selAttributesAtIndexLongestEffectiveRangeInRange_Handle, location, out longestEffectiveRange, rangeLimit));
}
return (NSDictionary)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_UInt64_out_NSRange_NSRange(base.SuperHandle, selAttributesAtIndexLongestEffectiveRangeInRange_Handle, location, out longestEffectiveRange, rangeLimit));
}
[Export("attribute:atIndex:longestEffectiveRange:inRange:")]
public virtual NSObject GetAttribute(string attribute, ulong location, out NSRange longestEffectiveRange, NSRange rangeLimit)
{
if (attribute == null)
{
throw new ArgumentNullException("attribute");
}
IntPtr intPtr = NSString.CreateNative(attribute);
NSObject result = (!IsDirectBinding) ? Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper_IntPtr_UInt64_out_NSRange_NSRange(base.SuperHandle, selAttributeAtIndexLongestEffectiveRangeInRange_Handle, intPtr, location, out longestEffectiveRange, rangeLimit)) : Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_UInt64_out_NSRange_NSRange(base.Handle, selAttributeAtIndexLongestEffectiveRangeInRange_Handle, intPtr, location, out longestEffectiveRange, rangeLimit));
NSString.ReleaseNative(intPtr);
return result;
}
[Export("isEqualToAttributedString:")]
public virtual bool IsEqual(NSAttributedString other)
{
if (other == null)
{
throw new ArgumentNullException("other");
}
if (IsDirectBinding)
{
return Messaging.bool_objc_msgSend_IntPtr(base.Handle, selIsEqualToAttributedString_Handle, other.Handle);
}
return Messaging.bool_objc_msgSendSuper_IntPtr(base.SuperHandle, selIsEqualToAttributedString_Handle, other.Handle);
}
[Export("initWithString:")]
public NSAttributedString(string str)
: base(NSObjectFlag.Empty)
{
if (str == null)
{
throw new ArgumentNullException("str");
}
IntPtr intPtr = NSString.CreateNative(str);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selInitWithString_Handle, intPtr);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selInitWithString_Handle, intPtr);
}
NSString.ReleaseNative(intPtr);
}
[Export("initWithString:attributes:")]
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSAttributedString(string str, NSDictionary attributes)
: base(NSObjectFlag.Empty)
{
if (str == null)
{
throw new ArgumentNullException("str");
}
if (attributes == null)
{
throw new ArgumentNullException("attributes");
}
IntPtr intPtr = NSString.CreateNative(str);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(base.Handle, selInitWithStringAttributes_Handle, intPtr, attributes.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selInitWithStringAttributes_Handle, intPtr, attributes.Handle);
}
NSString.ReleaseNative(intPtr);
}
[Export("initWithAttributedString:")]
public NSAttributedString(NSAttributedString other)
: base(NSObjectFlag.Empty)
{
if (other == null)
{
throw new ArgumentNullException("other");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, selInitWithAttributedString_Handle, other.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, selInitWithAttributedString_Handle, other.Handle);
}
}
[Export("enumerateAttributesInRange:options:usingBlock:")]
public unsafe virtual void EnumerateAttributes(NSRange range, NSAttributedStringEnumeration options, NSAttributedRangeCallback callback)
{
if (callback == null)
{
throw new ArgumentNullException("callback");
}
BlockLiteral blockLiteral = default(BlockLiteral);
BlockLiteral* ptr = &blockLiteral;
blockLiteral.SetupBlock(Trampolines.SDNSAttributedRangeCallback.Handler, callback);
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_NSRange_UInt64_IntPtr(base.Handle, selEnumerateAttributesInRangeOptionsUsingBlock_Handle, range, (ulong)options, (IntPtr)(void*)ptr);
}
else
{
Messaging.void_objc_msgSendSuper_NSRange_UInt64_IntPtr(base.SuperHandle, selEnumerateAttributesInRangeOptionsUsingBlock_Handle, range, (ulong)options, (IntPtr)(void*)ptr);
}
ptr->CleanupBlock();
}
[Export("enumerateAttribute:inRange:options:usingBlock:")]
public unsafe virtual void EnumerateAttribute(NSString attributeName, NSRange inRange, NSAttributedStringEnumeration options, NSAttributedStringCallback callback)
{
if (attributeName == null)
{
throw new ArgumentNullException("attributeName");
}
if (callback == null)
{
throw new ArgumentNullException("callback");
}
BlockLiteral blockLiteral = default(BlockLiteral);
BlockLiteral* ptr = &blockLiteral;
blockLiteral.SetupBlock(Trampolines.SDNSAttributedStringCallback.Handler, callback);
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr_NSRange_UInt64_IntPtr(base.Handle, selEnumerateAttributeInRangeOptionsUsingBlock_Handle, attributeName.Handle, inRange, (ulong)options, (IntPtr)(void*)ptr);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr_NSRange_UInt64_IntPtr(base.SuperHandle, selEnumerateAttributeInRangeOptionsUsingBlock_Handle, attributeName.Handle, inRange, (ulong)options, (IntPtr)(void*)ptr);
}
ptr->CleanupBlock();
}
[Export("initWithData:options:documentAttributes:error:")]
public NSAttributedString(NSData data, NSDictionary options, out NSDictionary docAttributes, out NSError error)
: base(NSObjectFlag.Empty)
{
if (data == null)
{
throw new ArgumentNullException("data");
}
if (options == null)
{
throw new ArgumentNullException("options");
}
IntPtr intPtr = Marshal.AllocHGlobal(4);
Marshal.WriteInt32(intPtr, 0);
IntPtr intPtr2 = Marshal.AllocHGlobal(4);
Marshal.WriteInt32(intPtr2, 0);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr_IntPtr(base.Handle, selInitWithDataOptionsDocumentAttributesError_Handle, data.Handle, options.Handle, intPtr, intPtr2);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr_IntPtr(base.SuperHandle, selInitWithDataOptionsDocumentAttributesError_Handle, data.Handle, options.Handle, intPtr, intPtr2);
}
IntPtr intPtr3 = Marshal.ReadIntPtr(intPtr);
docAttributes = ((intPtr3 != IntPtr.Zero) ? ((NSDictionary)Runtime.GetNSObject(intPtr3)) : null);
Marshal.FreeHGlobal(intPtr);
IntPtr intPtr4 = Marshal.ReadIntPtr(intPtr2);
error = ((intPtr4 != IntPtr.Zero) ? ((NSError)Runtime.GetNSObject(intPtr4)) : null);
Marshal.FreeHGlobal(intPtr2);
}
[Export("initWithDocFormat:documentAttributes:")]
public NSAttributedString(NSData wordDocFormat, out NSDictionary docAttributes)
: base(NSObjectFlag.Empty)
{
if (wordDocFormat == null)
{
throw new ArgumentNullException("wordDocFormat");
}
IntPtr intPtr = Marshal.AllocHGlobal(4);
Marshal.WriteInt32(intPtr, 0);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(base.Handle, selInitWithDocFormatDocumentAttributes_Handle, wordDocFormat.Handle, intPtr);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selInitWithDocFormatDocumentAttributes_Handle, wordDocFormat.Handle, intPtr);
}
IntPtr intPtr2 = Marshal.ReadIntPtr(intPtr);
docAttributes = ((intPtr2 != IntPtr.Zero) ? ((NSDictionary)Runtime.GetNSObject(intPtr2)) : null);
Marshal.FreeHGlobal(intPtr);
}
[Export("initWithHTML:baseURL:documentAttributes:")]
public NSAttributedString(NSData htmlData, NSUrl baseUrl, out NSDictionary docAttributes)
: base(NSObjectFlag.Empty)
{
if (htmlData == null)
{
throw new ArgumentNullException("htmlData");
}
if (baseUrl == null)
{
throw new ArgumentNullException("baseUrl");
}
IntPtr intPtr = Marshal.AllocHGlobal(4);
Marshal.WriteInt32(intPtr, 0);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr(base.Handle, selInitWithHTMLBaseURLDocumentAttributes_Handle, htmlData.Handle, baseUrl.Handle, intPtr);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr(base.SuperHandle, selInitWithHTMLBaseURLDocumentAttributes_Handle, htmlData.Handle, baseUrl.Handle, intPtr);
}
IntPtr intPtr2 = Marshal.ReadIntPtr(intPtr);
docAttributes = ((intPtr2 != IntPtr.Zero) ? ((NSDictionary)Runtime.GetNSObject(intPtr2)) : null);
Marshal.FreeHGlobal(intPtr);
}
[Export("drawAtPoint:")]
public virtual void DrawString(CGPoint point)
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_CGPoint(base.Handle, selDrawAtPoint_Handle, point);
}
else
{
Messaging.void_objc_msgSendSuper_CGPoint(base.SuperHandle, selDrawAtPoint_Handle, point);
}
}
[Export("drawInRect:")]
public virtual void DrawString(CGRect rect)
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_CGRect(base.Handle, selDrawInRect_Handle, rect);
}
else
{
Messaging.void_objc_msgSendSuper_CGRect(base.SuperHandle, selDrawInRect_Handle, rect);
}
}
[Export("drawWithRect:options:")]
public virtual void DrawString(CGRect rect, NSStringDrawingOptions options)
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_CGRect_UInt64(base.Handle, selDrawWithRectOptions_Handle, rect, (ulong)options);
}
else
{
Messaging.void_objc_msgSendSuper_CGRect_UInt64(base.SuperHandle, selDrawWithRectOptions_Handle, rect, (ulong)options);
}
}
}
}