[Libreoffice] Question about Spec for markers (=line end arrows)

Regina Henschel rb.henschel at t-online.de
Sun Aug 21 14:41:28 PDT 2011


Hi all, hi Thorsten (I guess, it's your field of work)

The spec for markers is in Chapter 16.40.8 of ODF 1.2 part2, page 306.
<cite>Marker geometry is defined by a svg:d attribute. </cite>
<cite>
The geometry is horizontally centered. It is vertically positioned 
relative to an offset value which is specified by a 
draw:marker-start-center attribute for markers referenced by a 
draw:marker-start attribute, and by the draw:marker-end-center attribute 
for markers referenced by a draw:marker-end attribute. The attribute 
value true defines an offset of 0.5 and the attribute value false 
defines an offset of 0.3, which is also the default value. The offset 
specifies the marker's vertical position in a range from 0.0 to 1.0, 
where the value 0.0 means the geometry's bottom bound is aligned to the 
X axis of the local coordinate system of the marker geometry, and where 
the value 1.0 means the top bound to be aligned to the X axis of the 
local coordinate system of the marker geometry.
</cite>

For example: <draw:marker draw:name="Arrow" svg:viewBox="0 0 20 30" 
svg:d="m10 0-10 30h20z"/>
You get a symmetric triangle with the baseline from (0|30) to (20|30) 
and the top in (10|0).
This is horizontally centered to baseline from (-10|30) to (10|30) with 
top in (0|0).

Now the questions:
(1) The offset of "0.3" for draw:marker-start-center="false" looks 
suspicious to me. I think it has to be either 0.0 or 1.0.

(2) Which coordinates got the triangle, if the offset would be 1.0?
LO has a parameter "fDockingPosition" in 
basegfx::tools::createAreaGeometryForLineStartEnd in 
/core/basegfx/source/polygon/b2dlinegeometry.cxx. This is called from 
create2DDecomposition in 
drawinglayer/source/primitive2d/polygonprimitive2d.cxx with 0.5 for 
"centered" and 0.0 for "not centered". So fDockingPosition equals 1.0- 
Offset?


And then the next two paragraphs in the spec:
<cite>If the marker referenced by a draw:marker-start attribute, the 
marker geometry is then rotated so that the Y axis is aligned with the 
direction of the stroke in the start/end point direction.</cite>
<cite>If the marker is referenced by a draw:marker-end attribute, the 
marker geometry is then rotated so that the X axis is aligned with the 
direction of the stroke in the end/start point direction.</cite>

(3) In case "draw:marker-end" the marker has to be to aligned to Y axis 
too, same as in case "draw:marker-start" ?

Kind regards
Regina





More information about the LibreOffice mailing list