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

Regina Henschel rb.henschel at t-online.de
Thu Mar 24 15:35:06 UTC 2016


Hi Armin,

I need an advice/opinion _where_ to hold the information:

I cannot calculate whether to exchange 'miter' with 'bevel' directly in 
svgreader, because there only properties for the whole path are handled, 
but such exchange only happens for a single line pair of the path. So I 
think, the exchange needs to be in createAreaGeometry part //check and 
create linejoin. Is that right?

createAreaGeometry gets all needed information already in distinct 
parameters. The division in single parameters is done inside 
PolygonStrokePrimitive2D::create2DDecomposition part // create fat line 
data. There I need access to 'miterlimit'. How should I hold this 
information? Should I extend LineAttribute, or somethink else?

Kind regards
Regina

Armin Le Grand schrieb:
> Hi Regina,
>
> AFAIK it is partially used, but not completely. I know of some cases in
> renderers where today a fixed default of 15.0 is used. Various
> GraphicSystems use various definitions for it, take care. It would be
> necessary to define a definition for it for LO, import where available
> and use where available. Some sub-systems can use it, e.g. Gdiplus or
> cairo, export to SVG, but no tMetafile (at least not ours). There is
> definitely no UI for it.
>
> HTH!
> Regards,
> Armin
>
> Am 24.03.2016 um 01:39 schrieb Regina Henschel:
>> 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
>>
>>
>>
>>
>> _______________________________________________
>> LibreOffice mailing list
>> LibreOffice at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/libreoffice
>



More information about the LibreOffice mailing list