Forge
csharpdeeb25a2
1namespace CascadeIDE.Models;
2
3/// <summary>Типографика UI. TOML: <c>[fonts]</c> с вложенными <c>[fonts.intercom]</c>, <c>[fonts.editor]</c>. Значения — из <c>Settings/defaults-settings.toml</c> + user merge.</summary>
4public sealed class FontsSettings
5{
6 public IntercomFontsSettings Intercom { get; set; } = new();
7
8 public EditorFontsSettings Editor { get; set; } = new();
9}
10
11/// <summary>Skia-лента Intercom. TOML: <c>[fonts.intercom]</c>.</summary>
12public sealed class IntercomFontsSettings
13{
14 /// <summary>Базовый prose (pt) для шкалы <see cref="MetricsScale"/>; совпадает с заводским <c>prose_pt</c> в defaults-settings.toml.</summary>
15 public const float ProseBaselinePt = 11f;
16
17 public double ProsePt { get; set; }
18
19 /// <summary>Prose (pt) в лобовом Forward (<c>primary_work_surface = intercom</c>).</summary>
20 public double ProsePtForward { get; set; }
21
22 public string ProseFamily { get; set; } = "";
23
24 public string MonoFamily { get; set; } = "";
25
26 public string ChipFamily { get; set; } = "";
27
28 public string ChipIdFamily { get; set; } = "";
29
30 public string SlashMetaFamily { get; set; } = "";
31
32 public string SlashArgsFamily { get; set; } = "";
33
34 public string RoleFamily { get; set; } = "";
35
36 public string GutterFamily { get; set; } = "";
37
38 public double ComposerPt { get; set; }
39
40 public double CommandLinePt { get; set; }
41
42 public double ChromeTitlePt { get; set; }
43
44 public double ChromeSubtitlePt { get; set; }
45
46 public double ChromeHeadingPt { get; set; }
47
48 public double CardTitlePt { get; set; }
49
50 public double PanelTitlePt { get; set; }
51
52 public double PanelSubtitlePt { get; set; }
53
54 public double PanelLabelPt { get; set; }
55
56 public double PanelInputPt { get; set; }
57
58 public double PanelBodyPt { get; set; }
59
60 public float ResolveProsePt(bool forwardHost) =>
61 (float)(forwardHost ? ProsePtForward : ProsePt);
62
63 public float MetricsScale(bool forwardHost) =>
64 ResolveProsePt(forwardHost) / ProseBaselinePt;
65
66 public float ResolveComposerPt(bool forwardHost) =>
67 (float)ComposerPt;
68
69 public float ResolveComposerLineHeight(bool forwardHost) =>
70 ResolveComposerPt(forwardHost) * (17f / 12f);
71
72 public float ResolveCommandLinePt(bool forwardHost) =>
73 (float)CommandLinePt;
74
75 public float ResolveCommandLinePreviewPt(bool forwardHost) =>
76 ResolveCommandLinePt(forwardHost) * (10f / 12f);
77
78 public float ResolveCommandLineLineHeight(bool forwardHost) =>
79 ResolveCommandLinePt(forwardHost) * (22f / 12f);
80
81 public float ResolveChromeTitlePt() => (float)ChromeTitlePt;
82
83 public float ResolveChromeSubtitlePt() => (float)ChromeSubtitlePt;
84
85 public float ResolveChromeHeadingPt() => (float)ChromeHeadingPt;
86
87 public float ResolveCardTitleLineHeight(bool forwardHost) =>
88 (float)CardTitlePt;
89
90 public float ResolvePanelTitlePt() => (float)PanelTitlePt;
91
92 public float ResolvePanelSubtitlePt() => (float)PanelSubtitlePt;
93
94 public float ResolvePanelLabelPt() => (float)PanelLabelPt;
95
96 public float ResolvePanelInputPt() => (float)PanelInputPt;
97
98 public float ResolvePanelBodyPt() => (float)PanelBodyPt;
99
100 public string ResolveProseFamily() => ProseFamily.Trim();
101
102 public string ResolveMonoFamily() => MonoFamily.Trim();
103
104 public string ResolveChipFamily() => ChipFamily.Trim();
105
106 public string ResolveChipIdFamily() => ChipIdFamily.Trim();
107
108 public string ResolveSlashMetaFamily() => SlashMetaFamily.Trim();
109
110 public string ResolveSlashArgsFamily() => SlashArgsFamily.Trim();
111
112 public string ResolveRoleFamily() => RoleFamily.Trim();
113
114 public string ResolveGutterFamily() => GutterFamily.Trim();
115}
116
117/// <summary>Редактор кода (AvaloniaEdit). TOML: <c>[fonts.editor]</c>.</summary>
118public sealed class EditorFontsSettings
119{
120 public double SizePt { get; set; }
121
122 public string Family { get; set; } = "";
123
124 public float ResolveSizePt() => (float)SizePt;
125
126 public string ResolveFamily() => Family.Trim();
127}
128
View only · write via MCP/CIDE