mirror of
https://gitee.com/csharpui/CPF.git
synced 2026-08-27 19:17:05 +08:00
初始化
This commit is contained in:
359
CPF.Mac/Mac/CoreText/CTFontDescriptorAttributes.cs
Normal file
359
CPF.Mac/Mac/CoreText/CTFontDescriptorAttributes.cs
Normal file
@@ -0,0 +1,359 @@
|
||||
using CPF.Mac.CoreGraphics;
|
||||
using CPF.Mac.Foundation;
|
||||
using CPF.Mac.ObjCRuntime;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace CPF.Mac.CoreText
|
||||
{
|
||||
[Since(3, 2)]
|
||||
public class CTFontDescriptorAttributes
|
||||
{
|
||||
public NSDictionary Dictionary
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public NSUrl Url
|
||||
{
|
||||
get
|
||||
{
|
||||
return (NSUrl)Dictionary[CTFontDescriptorAttributeKey.Url];
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Url, value);
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetStringValue(Dictionary, CTFontDescriptorAttributeKey.Name);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Name, value);
|
||||
}
|
||||
}
|
||||
|
||||
public string DisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetStringValue(Dictionary, CTFontDescriptorAttributeKey.DisplayName);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.DisplayName, value);
|
||||
}
|
||||
}
|
||||
|
||||
public string FamilyName
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetStringValue(Dictionary, CTFontDescriptorAttributeKey.FamilyName);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.FamilyName, value);
|
||||
}
|
||||
}
|
||||
|
||||
public string StyleName
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetStringValue(Dictionary, CTFontDescriptorAttributeKey.StyleName);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.StyleName, value);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontTraits Traits
|
||||
{
|
||||
get
|
||||
{
|
||||
NSDictionary nSDictionary = (NSDictionary)Dictionary[CTFontDescriptorAttributeKey.Traits];
|
||||
if (nSDictionary == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new CTFontTraits(nSDictionary);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Traits, value?.Dictionary);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontVariation Variation
|
||||
{
|
||||
get
|
||||
{
|
||||
NSDictionary nSDictionary = (NSDictionary)Dictionary[CTFontDescriptorAttributeKey.Variation];
|
||||
if (nSDictionary != null)
|
||||
{
|
||||
return new CTFontVariation(nSDictionary);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Variation, value?.Dictionary);
|
||||
}
|
||||
}
|
||||
|
||||
public float? Size
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetSingleValue(Dictionary, CTFontDescriptorAttributeKey.Size);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Size, value);
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe CGAffineTransform? Matrix
|
||||
{
|
||||
get
|
||||
{
|
||||
NSData nSData = (NSData)Dictionary[CTFontDescriptorAttributeKey.Matrix];
|
||||
if (nSData == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return (CGAffineTransform)Marshal.PtrToStructure(nSData.Bytes, typeof(CGAffineTransform));
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!value.HasValue)
|
||||
{
|
||||
Adapter.SetValue((IDictionary<NSObject, NSObject>)Dictionary, (NSObject)CTFontDescriptorAttributeKey.Matrix, (NSObject)null);
|
||||
return;
|
||||
}
|
||||
byte[] array = new byte[Marshal.SizeOf(typeof(CGAffineTransform))];
|
||||
fixed (byte* value2 = array)
|
||||
{
|
||||
Marshal.StructureToPtr(value.Value, (IntPtr)(void*)value2, fDeleteOld: false);
|
||||
}
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Matrix, NSData.FromArray(array));
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<CTFontDescriptor> CascadeList
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetNativeArray(Dictionary, CTFontDescriptorAttributeKey.CascadeList, (IntPtr d) => new CTFontDescriptor(d, owns: false));
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetNativeValue(Dictionary, CTFontDescriptorAttributeKey.CascadeList, value);
|
||||
}
|
||||
}
|
||||
|
||||
public NSCharacterSet CharacterSet
|
||||
{
|
||||
get
|
||||
{
|
||||
return (NSCharacterSet)Dictionary[CTFontDescriptorAttributeKey.CharacterSet];
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.CharacterSet, value);
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<string> Languages
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetStringArray(Dictionary, CTFontDescriptorAttributeKey.Languages);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Languages, value);
|
||||
}
|
||||
}
|
||||
|
||||
public float? BaselineAdjust
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetSingleValue(Dictionary, CTFontDescriptorAttributeKey.BaselineAdjust);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.BaselineAdjust, value);
|
||||
}
|
||||
}
|
||||
|
||||
public float? MacintoshEncodings
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetSingleValue(Dictionary, CTFontDescriptorAttributeKey.MacintoshEncodings);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.MacintoshEncodings, value);
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<CTFontFeatures> Features
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetNativeArray(Dictionary, CTFontDescriptorAttributeKey.Features, (IntPtr d) => new CTFontFeatures((NSDictionary)Runtime.GetNSObject(d)));
|
||||
}
|
||||
set
|
||||
{
|
||||
List<CTFontFeatures> source;
|
||||
if (value == null || (source = new List<CTFontFeatures>(value)).Count == 0)
|
||||
{
|
||||
Adapter.SetValue((IDictionary<NSObject, NSObject>)Dictionary, (NSObject)CTFontDescriptorAttributeKey.Features, (NSObject)null);
|
||||
}
|
||||
else
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Features, NSArray.FromNSObjects(((IEnumerable<CTFontFeatures>)source).Select((Func<CTFontFeatures, NSObject>)((CTFontFeatures e) => e.Dictionary)).ToList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<CTFontFeatureSettings> FeatureSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetNativeArray(Dictionary, CTFontDescriptorAttributeKey.Features, (IntPtr d) => new CTFontFeatureSettings((NSDictionary)Runtime.GetNSObject(d)));
|
||||
}
|
||||
set
|
||||
{
|
||||
List<CTFontFeatureSettings> source;
|
||||
if (value == null || (source = new List<CTFontFeatureSettings>(value)).Count == 0)
|
||||
{
|
||||
Adapter.SetValue((IDictionary<NSObject, NSObject>)Dictionary, (NSObject)CTFontDescriptorAttributeKey.Features, (NSObject)null);
|
||||
}
|
||||
else
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.FeatureSettings, NSArray.FromNSObjects(((IEnumerable<CTFontFeatureSettings>)source).Select((Func<CTFontFeatureSettings, NSObject>)((CTFontFeatureSettings e) => e.Dictionary)).ToList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float? FixedAdvance
|
||||
{
|
||||
get
|
||||
{
|
||||
return Adapter.GetSingleValue(Dictionary, CTFontDescriptorAttributeKey.FixedAdvance);
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.FixedAdvance, value);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontOrientation? FontOrientation
|
||||
{
|
||||
get
|
||||
{
|
||||
uint? uInt32Value = Adapter.GetUInt32Value(Dictionary, CTFontDescriptorAttributeKey.FontOrientation);
|
||||
if (uInt32Value.HasValue)
|
||||
{
|
||||
return (CTFontOrientation)uInt32Value.Value;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.FontOrientation, value.HasValue ? new uint?((uint)value.Value) : null);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontFormat? FontFormat
|
||||
{
|
||||
get
|
||||
{
|
||||
uint? uInt32Value = Adapter.GetUInt32Value(Dictionary, CTFontDescriptorAttributeKey.FontFormat);
|
||||
if (uInt32Value.HasValue)
|
||||
{
|
||||
return (CTFontFormat)uInt32Value.Value;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.FontFormat, value.HasValue ? new uint?((uint)value.Value) : null);
|
||||
}
|
||||
}
|
||||
|
||||
public NSNumber RegistrationScope
|
||||
{
|
||||
get
|
||||
{
|
||||
return (NSNumber)Dictionary[CTFontDescriptorAttributeKey.RegistrationScope];
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.RegistrationScope, value);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontPriority? Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
uint? uInt32Value = Adapter.GetUInt32Value(Dictionary, CTFontDescriptorAttributeKey.Priority);
|
||||
if (uInt32Value.HasValue)
|
||||
{
|
||||
return (CTFontPriority)uInt32Value.Value;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Priority, value.HasValue ? new uint?((uint)value.Value) : null);
|
||||
}
|
||||
}
|
||||
|
||||
public bool Enabled
|
||||
{
|
||||
get
|
||||
{
|
||||
NSNumber nSNumber = (NSNumber)Dictionary[CTFontDescriptorAttributeKey.Enabled];
|
||||
if (nSNumber == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return nSNumber.Int32Value != 0;
|
||||
}
|
||||
set
|
||||
{
|
||||
Adapter.SetValue(Dictionary, CTFontDescriptorAttributeKey.Enabled, value ? new NSNumber(1) : null);
|
||||
}
|
||||
}
|
||||
|
||||
public CTFontDescriptorAttributes()
|
||||
: this(new NSMutableDictionary())
|
||||
{
|
||||
}
|
||||
|
||||
public CTFontDescriptorAttributes(NSDictionary dictionary)
|
||||
{
|
||||
if (dictionary == null)
|
||||
{
|
||||
throw new ArgumentNullException("dictionary");
|
||||
}
|
||||
Dictionary = dictionary;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user