<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Regina Henschel <<a href="mailto:rb.henschel@t-online.de">rb.henschel@t-online.de</a>> 於 2019年4月11日 週四 下午6:55寫道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Miklos Vajna schrieb am 11-Apr-19 um 09:59:<br>
> Hi Regina,<br>
>  <br>
> I might be wrong, but I would expect that the evaluation of the formulas<br>
> don't depend on the shape type. If it does, it feels we don't understand<br>
> the general rule, so we work the problem around with evaluating a<br>
> formula in different ways for different shape types.<br>
<br>
Evaluating the formulas _is_ independent from shape type. But for <br>
getting the adjustment value, you need to revers the calculation.<br>
Shortened example for evaluating the formula:<br>
To get the y position of the handle:<br>
wedgeRectCallout: y = vertical center + adjust * height / 100000<br></blockquote><div> </div><div>The equation should hold: (adj1-adj0) = (y1-y0) * 100000 / height.<br></div><div>I think this should cover lots of cases already. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
star4 : y = vertical center - adjust * height / 100000<br>
diagStripe : y = height * adjust / 100000<br>
<br>
Currently we have only "adjust = y * 100000 / height" to get the <br>
adjustment value from the position. That fits to the diagStripe but not <br>
to wedgeRectCallout and star4.<br>
<br>
The problem with the ooxml-shapes is, that they bind the handle position <br>
to a formula result and not directly to the adjustment value.<br>
<br>
> <br>
>> Would that be OK? If yes, which are suitable C++ tools to do that and where<br>
>> should the parts be placed?<br>
> <br>
> Sure, if special-casing on the shape type improves the situation, then<br>
> it's better than nothing.<br>
<br>
I would like a generic solution too, but I see no way to do it.<br>
<br>
  I would keep it simple: just create an enum<br></blockquote><div><br></div><div>I think the patterns of the formula is much less than the number of types. Maybe worthy of identify them?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> with the different cases, and then you can have a switch to handle each.<br>
> If the function gets large, extract the handling of complicated cases to<br>
> their own functions.<br>
<br>
I think I'll just start and work out a concrete proposal. Then it might <br>
be easier to discuss possible better solutions.<br>
<br>
Kind regards<br>
Regina<br>
<br>
_______________________________________________<br>
LibreOffice mailing list<br>
<a href="mailto:LibreOffice@lists.freedesktop.org" target="_blank">LibreOffice@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/libreoffice" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/libreoffice</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Mark Hung<br></div></div></div></div>