Implementing SVG attribute "stroke-miterlimit" ( tdf#48066)

Regina Henschel rb.henschel at t-online.de
Thu Mar 24 00:39:23 UTC 2016


Hi all,

the following is, what I have found so far, but it might have errors. So 
please correct me.

If two lines build a corner, the corner-style can be None, Rounded, 
Beveled or Mitered. That is the property "draw:stroke-linejoin" in ODF 
and "stroke-linejoin" in SVG. But SVG has the additional property 
"stroke-miterlimit". Using it, the author can determine how sharp the 
corner can be before it is turned into kind Beveled. I see no such 
property in ODF. LibreOffice turns automatically to kind Bevel using the 
default value of svg:stroke-miterlimit.

The API has the struct "StrokeAttributes" in css::rendering. It has the 
element "MiterLimit". I do not know any UI for it and don't know, if and 
how it is usable at all. The service "LineProperties" in css::drawing 
does not provide such property.

In OOXML it is the attribute "lim" in element a:miter (20.1.8.43).


This svg-attribute is read on SVG import. And it could be evaluated by 
the method basegfx::tools::createAreaGeometry(), if it got a value into 
the already prepared parameter. But between these two ends there is 
currently no way to transport the information. The line properties 
Width, Color, LineCap and LineJoin are transported via class 
"LineAttribute".

So my question is, how to transport the "Miterlimit"-information?
Add a member to class LineAttribute?
Add a member to PolygonStrokePrimitive2D and an additional new parameter 
into the chain of calls and constructions?
Only fix svg-import or care for other things too? What would I have to 
consider?

Kind regards
Regina






More information about the LibreOffice mailing list