using CPF.Mac.ObjCRuntime; using System; using System.Collections.Generic; namespace CPF.Mac.CoreText { [Since(3, 2)] public class CTParagraphStyleSettings { public IEnumerable TabStops { get; set; } public CTTextAlignment? Alignment { get; set; } public CTLineBreakMode? LineBreakMode { get; set; } public CTWritingDirection? BaseWritingDirection { get; set; } public float? FirstLineHeadIndent { get; set; } public float? HeadIndent { get; set; } public float? TailIndent { get; set; } public float? DefaultTabInterval { get; set; } public float? LineHeightMultiple { get; set; } public float? MaximumLineHeight { get; set; } public float? MinimumLineHeight { get; set; } public float? LineSpacing { get; set; } public float? ParagraphSpacing { get; set; } public float? ParagraphSpacingBefore { get; set; } public float? MaximumLineSpacing { get; set; } public float? MinimumLineSpacing { get; set; } public float? LineSpacingAdjustment { get; set; } internal List GetSpecifiers() { List list = new List(); if (TabStops != null) { list.Add(CreateValue(CTParagraphStyleSpecifier.TabStops, TabStops)); } if (Alignment.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.Alignment, (byte)Alignment.Value)); } if (LineBreakMode.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.LineBreakMode, (byte)LineBreakMode.Value)); } if (BaseWritingDirection.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.BaseWritingDirection, (byte)BaseWritingDirection.Value)); } if (FirstLineHeadIndent.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.FirstLineHeadIndent, FirstLineHeadIndent.Value)); } if (HeadIndent.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.HeadIndent, HeadIndent.Value)); } if (TailIndent.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.TailIndent, TailIndent.Value)); } if (DefaultTabInterval.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.DefaultTabInterval, DefaultTabInterval.Value)); } if (LineHeightMultiple.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.LineHeightMultiple, LineHeightMultiple.Value)); } if (MaximumLineHeight.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.MaximumLineHeight, MaximumLineHeight.Value)); } if (MinimumLineHeight.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.MinimumLineHeight, MinimumLineHeight.Value)); } if (LineSpacing.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.LineSpacing, LineSpacing.Value)); } if (ParagraphSpacing.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.ParagraphSpacing, ParagraphSpacing.Value)); } if (ParagraphSpacingBefore.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.ParagraphSpacingBefore, ParagraphSpacingBefore.Value)); } if (MaximumLineSpacing.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.MaximumLineSpacing, MaximumLineSpacing.Value)); } if (MinimumLineSpacing.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.MinimumLineSpacing, MinimumLineSpacing.Value)); } if (LineSpacingAdjustment.HasValue) { list.Add(CreateValue(CTParagraphStyleSpecifier.LineSpacingAdjustment, LineSpacingAdjustment.Value)); } return list; } private static CTParagraphStyleSpecifierValue CreateValue(CTParagraphStyleSpecifier spec, IEnumerable value) { List list = new List(); foreach (CTTextTab item in value) { list.Add(item.Handle); } return new CTParagraphStyleSpecifierIntPtrsValue(spec, list.ToArray()); } private static CTParagraphStyleSpecifierValue CreateValue(CTParagraphStyleSpecifier spec, byte value) { return new CTParagraphStyleSpecifierByteValue(spec, value); } private static CTParagraphStyleSpecifierValue CreateValue(CTParagraphStyleSpecifier spec, float value) { return new CTParagraphStyleSpecifierSingleValue(spec, value); } } }