fix: Kalender-Titel/Name unauffällig verkleinern, Y-Abstände weiter straffen
Titel ("Anwesenheit") und Schülername dienen nur der Kontrolle, dass der
Kalender zum richtigen Kind gehört - nicht als gestalterischer Blickfang.
Beide jetzt klein und hellgrau statt groß/fett/dunkel, dazu ein eigener
(kleinerer) Y-Abstand vor der Legende statt der bisherigen Wiederverwendung
von monthGapX.
Der dadurch eingesparte Höhen-Overhead im Referenzentwurf (61mm -> 45mm vor
den Wochenzeilen) erhöht direkt den gemeinsamen Skalierungsfaktor k, wenn die
Boxhöhe der begrenzende Faktor ist - die Tageskacheln werden dadurch bei
gleicher Vorlagenbox spürbar größer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,9 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
||||
// nachdem, ob Breite oder Höhe der realen Box stärker vom Referenzentwurf abweicht.
|
||||
var designWidth = 170f;
|
||||
var designMonthGapX = 6f;
|
||||
// Eigener (kleinerer) Y-Abstand vor der Legende, getrennt von designMonthGapX (das misst den
|
||||
// horizontalen Abstand zwischen den Monatsblöcken und soll davon unberührt bleiben).
|
||||
var designTrailingGapY = 4f;
|
||||
var first = options.NormalizedStartMonth;
|
||||
var monthCount = options.NormalizedMonthCount;
|
||||
|
||||
@@ -60,10 +63,14 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
||||
var offset = ((int)current.DayOfWeek + 6) % 7;
|
||||
maxWeeks = Math.Max(maxWeeks, (int)Math.Ceiling((offset + days.Count) / 7d));
|
||||
}
|
||||
// Höhe des Referenzentwurfs bei k=1 (mm): Titel+Name+Abstand (26) + Monats-/Wochentagskopf
|
||||
// (20) + maxWeeks Wochenzeilen (10 je Woche) + monthGapX (6) + Legende/Nachlauf (9). Muss mit
|
||||
// der Höhenberechnung am Ende dieser Methode ("y") übereinstimmen.
|
||||
var designHeight = 26f + 20f + 10f * maxWeeks + designMonthGapX + 9f;
|
||||
// Höhe des Referenzentwurfs bei k=1 (mm): Titel+Name+Abstand (12, siehe unten - beide bewusst
|
||||
// klein/grau gehalten, sie dienen nur der Kontrolle "sind das die richtigen Daten", nicht als
|
||||
// gestalterischer Blickfang) + Monats-/Wochentagskopf (20) + maxWeeks Wochenzeilen (10 je
|
||||
// Woche) + Trailing-Gap (4) + Legende/Nachlauf (9). Muss mit der Höhenberechnung am Ende
|
||||
// dieser Methode ("y") übereinstimmen. Je kleiner dieser "Overhead" ausfällt, desto größer
|
||||
// kann k (und damit das ganze Raster inkl. der Tageskacheln) werden, wenn contentHeight der
|
||||
// begrenzende Faktor ist.
|
||||
var designHeight = 12f + 20f + 10f * maxWeeks + designTrailingGapY + 9f;
|
||||
|
||||
// a_x/a_y: wie viel größer/kleiner als der Referenzentwurf die reale Box in jeweils einer
|
||||
// Richtung ist. Eine DRAWBOX bricht anders als FLOWDRAWBOX nicht automatisch auf Folgeseiten
|
||||
@@ -93,12 +100,15 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
||||
var commands = new List<DrawingCommand>();
|
||||
var contentWidthDesign = designWidth * k;
|
||||
var y = 0f;
|
||||
commands.Add(new DrawStringEx(0, y, 14 * k, contentWidthDesign, "Anwesenheit",
|
||||
DrawingTextAlignment.AlignLeft, 11 * finalScale, Color: "#1F2937", Bold: true));
|
||||
y += 14 * k;
|
||||
commands.Add(new DrawStringEx(0, y, 10 * k, contentWidthDesign, studentName,
|
||||
DrawingTextAlignment.AlignLeft, 8 * finalScale, Color: "#6B7280"));
|
||||
y += 10 * k + 2 * k;
|
||||
// Titel/Name bewusst klein und in hellem Grau: sie dienen nur der Kontrolle, dass der
|
||||
// Kalender zum richtigen Kind/Zeitraum gehört, nicht als gestalterischer Blickfang - der
|
||||
// eingesparte Platz kommt stattdessen den Tageskacheln zugute (siehe designHeight oben).
|
||||
commands.Add(new DrawStringEx(0, y, 6 * k, contentWidthDesign, "Anwesenheit",
|
||||
DrawingTextAlignment.AlignLeft, 7 * finalScale, Color: "#9CA3AF"));
|
||||
y += 6 * k;
|
||||
commands.Add(new DrawStringEx(0, y, 5 * k, contentWidthDesign, studentName,
|
||||
DrawingTextAlignment.AlignLeft, 6.5f * finalScale, Color: "#9CA3AF"));
|
||||
y += 5 * k + 1 * k;
|
||||
var weekdays = new[] { "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" };
|
||||
var gridStartY = y;
|
||||
for (var monthIndex = 0; monthIndex < monthCount; monthIndex++)
|
||||
@@ -134,7 +144,7 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
||||
Color: day.HasSignal ? "#FFFFFF" : "#374151", Bold: day.HasSignal));
|
||||
}
|
||||
}
|
||||
y = gridStartY + 11 * k + 9 * k + maxWeeks * cellHeight + monthGapX;
|
||||
y = gridStartY + 11 * k + 9 * k + maxWeeks * cellHeight + designTrailingGapY * k;
|
||||
|
||||
commands.Add(new DrawStringEx(0, y, 8 * k, contentWidthDesign,
|
||||
"U unentschuldigt · A abwesend · V verspätet · E entschuldigt · ! Klassenbuch",
|
||||
|
||||
Reference in New Issue
Block a user