von Patrick Gundlach |

Feature der Woche: Platzierung von Objekten

Im November hatte ich schon die rasterbasierte und die absolute Platzierung im Blog. Nun gibt es Neuigkeiten zur absoluten Positionierung (also mit der Angabe von Längeneinheiten bei row und column bei PlaceObject).

Bisher war es so, dass die rasterbasierte Platzierung Flächen im Raster als belegt markiert und damit keine anderen Objekte auf diesen Flächen ausgegeben werden können. Mit dem Schalter allocate="no" kann man diese Belegung abschalten. Die absolute Ausgabe von Objekten (z.B. column=“3cm” row=“5cm”, vom linken oberen Seiten gemessen) hingegen bewirkt keine Belegung der Flächen.

Diese kann man seit Version 2.9.5 über den Schalter allocate="yes" einschalten. Damit kann man das Umfließen von Texten mit absolut platzierten Objekten kombinieren.

<Layout xmlns:sd="urn:speedata:2009/publisher/functions/en"
  xmlns="urn:speedata.de:2009/publisher/en">

  <SetGrid height="12pt" width="5mm"/>

  <Record element="data">
    <PlaceObject column="12cm" row="1cm" allocate="yes" allocate-left="1mm" allocate-bottom="3mm">
      <Box width="8cm" height="2cm" backgroundcolor="lightblue"/>
    </PlaceObject>
    <Output row="1" allocate="auto">
      <Text>
        <Paragraph>
          <Value select="sd:dummytext(3)"></Value>
        </Paragraph>
      </Text>
    </Output>
  </Record>
</Layout>

allocate-left und allocate-bottom geben den zusätzlichen Rahmen an, der als belegt markiert werden soll. In diesem Fall wird ein Rahmen von mindestens 1mm links von der Box und mindestens 3mm unterhalb der Box eingefügt, immer auf ganze Rasterzellen aufgerundet.

Das Ergebnis:

Die Ausgabe des Listings oben.

Mit <Trace gridallocation="yes" grid="yes" />:

Umfließen mit Rasterbelegung sichtbar gemacht.

Die absolute Platzierung kann auch mit dem Feature der Bildumrisse kombiniert werden. Ein kleines Programm zum Erzeugen der Umrisse habe ich unter https://github.com/speedata/imageshaper veröffentlicht. Damit kann man zu einer Bilddatei eine XML-Datei erstellen, die den Bildumriss enthält. Der speedata Publisher kann dies auswerten und nur die vom Bild belegten Flächen als belegt markieren. Dazu muss nur die XML-Datei zur Bilddatei kopiert werden, so dass der Publisher diese findet.

Ich werde die Tage dazu ein neues Beispiel in das Repsoitory https://github.com/speedata/examples einchecken.

Bildumrisse werden automatisch ausgewertet.