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:
Mit <Trace gridallocation="yes" grid="yes" />
:
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.