CPF/CPF.Mac/Mac/CoreText/CTFontTraits.cs

119 lines
2.2 KiB
C#
Raw Normal View History

2023-11-21 23:05:03 +08:00
using CPF.Mac.Foundation;
using CPF.Mac.ObjCRuntime;
using System;
namespace CPF.Mac.CoreText
{
[Since(3, 2)]
public class CTFontTraits
{
internal const int ClassMaskShift = 28;
internal const uint StylisticClassMask = 4026531840u;
public NSDictionary Dictionary
{
get;
private set;
}
public uint? Symbolic
{
get
{
return Adapter.GetUInt32Value(Dictionary, CTFontTraitKey.Symbolic);
}
set
{
Adapter.SetValue(Dictionary, CTFontTraitKey.Symbolic, value);
}
}
public CTFontSymbolicTraits? SymbolicTraits
{
get
{
uint? symbolic = Symbolic;
if (symbolic.HasValue)
{
return (CTFontSymbolicTraits)(symbolic.Value & 0xFFFFFFF);
}
return null;
}
set
{
CTFontStylisticClass? stylisticClass = StylisticClass;
Symbolic = Adapter.BitwiseOr(stylisticClass.HasValue ? new uint?((uint)stylisticClass.Value) : null, value.HasValue ? new uint?((uint)value.Value) : null);
}
}
public CTFontStylisticClass? StylisticClass
{
get
{
uint? symbolic = Symbolic;
if (symbolic.HasValue)
{
return (CTFontStylisticClass)((int)symbolic.Value & -268435456);
}
return null;
}
set
{
CTFontSymbolicTraits? symbolicTraits = SymbolicTraits;
Symbolic = Adapter.BitwiseOr(symbolicTraits.HasValue ? new uint?((uint)symbolicTraits.Value) : null, value.HasValue ? new uint?((uint)value.Value) : null);
}
}
public float? Weight
{
get
{
return Adapter.GetSingleValue(Dictionary, CTFontTraitKey.Weight);
}
set
{
Adapter.SetValue(Dictionary, CTFontTraitKey.Weight, value);
}
}
public float? Width
{
get
{
return Adapter.GetSingleValue(Dictionary, CTFontTraitKey.Width);
}
set
{
Adapter.SetValue(Dictionary, CTFontTraitKey.Width, value);
}
}
public float? Slant
{
get
{
return Adapter.GetSingleValue(Dictionary, CTFontTraitKey.Slant);
}
set
{
Adapter.SetValue(Dictionary, CTFontTraitKey.Slant, value);
}
}
public CTFontTraits()
: this(new NSMutableDictionary())
{
}
public CTFontTraits(NSDictionary dictionary)
{
if (dictionary == null)
{
throw new ArgumentNullException("dictionary");
}
Dictionary = dictionary;
}
}
}