Einzelnen Beitrag anzeigen

hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 17:36
Hallo,

ich schreibe heute mal etwas Off-Topic, weil ich gern die Funktionsweise, den Ablauf der Komposition von fortlaufenden Abschnitten in einem Textverarbeitungsprogramm, wie man es aus Microsoft Word, Libre Office oder Apple Pages kennt, zu verstehen.

Ich schreibe im Moment mein eigenes Word Processor Control. Dieses soll sehr umfangreich werden. Ich habe zwei Module. Eines kümmert sich um die Daten, das andere um die Darstellung der Daten. Es handelt sich beim zweiten also um den Renderer für die Datenklasse.

Den Aufbau eines Daten Dokumentes mit formatierten Texten kann man sich grob umschrieben so bei mir vorstellen:
Code:
Dokument
  + Abschnitt (2 Spalten)
    + Absatz
      + Text
      + Tabulator
      + Text
      + Bild
    + Absatz
      + Text
  + Abschnitt
    ...
Wir haben also eine Datenstruktur mit einem Abschnitt, der wiederum zwei Absätze mit verschiedenem Inhalt enthält.
Die Render Engine übersetzt das Ganze im Moment wie folgt:
Code:
Dokument
  + Seite
    + Spalte (1. Spalte)
      + Blöcke
        + Absatz
          + Zeile
            + Text
            + Tabulator
            + Text
            + Bild
        + Absatz
          + Zeile
            + Text
    + Spalte (2. Spalte)
      + Blöcke
Der Renderer berechnet wieviele Zeilen, die durch die Datenstruktur erzeugt werden, in einen Absatz passen. Dann wird wiederum geschaut, wieviele Blöcke (Absatz oder Tabelle) in eine Spalte passen, falls die Höhe überschritten wird, wird in der nächsten Spalte fortgefahren und bei Bedarf eine neue Seite hinzugefügt.

Das bedeutet, dass ich im Moment mit meiner Struktur "feste" Abschnitte darstellen kann, also solche, die auf graden/ungraden/nächste Seite (Even/Odd/NextPage) beginnen. Für das Zeichnen des Controls bedeutet das einfach, dass ich für jede Seite alle Spalten von Links nach Rechts ausgebe, wobei der Inhalt der Spalten, die Blöcke dann von oben nach unten gezeichnet werden.

Innerhalb von Word, Pages etc. ist es aber möglich, dass auf einer Seite auch fortlaufende Abschnitte dargestellt werden können. Beispiel:
Code:
Seite
  Abschnitt (1 Spalte)
  Abschnitt (2 Spalten)
  Abschnitt (1 Spalte)
Wie muss man die Struktur verändern, dass man dies umsetzen kann? Bei einem fortlaufenden Abschnitt mit mehr als einer Spalte, muss man ja irgendwie im Vorhinein berechnen, wieviele Blöcke samt Zeilen in die jeweilige Spalte passen, um ein ausgeglichenes Anzeige Ergebnis zu erhalten.

Hat jemand einen Vorschlag?

Vielen Dank.
Miniaturansicht angehängter Grafiken
abschnitte-microsoft-word.jpg  

Geändert von hansklok (12. Mär 2020 um 18:09 Uhr)
  Mit Zitat antworten Zitat