Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hello, Tomas,

On 27/05/13 21:49, Tomas Hlavaty wrote:
it was great talking to you at the Linux Tag in Berlin on Saturday.  I
hope you don't mind me CCing the mailing list, in case somebody else
finds it interesting and could provide some info.

It was also delight to chat with you in the rainy Berlin. And for sure a guy that writes in 2013 in Lisp is a good guy for sure :)

Inspired by your talk about import filters, I would like to ask what is
the usual strategy to addressing impedance mismatch between features
covered in an input file format and LibreOffice internal representation?
E.g. when a feature is missing in the ODF format?

OK, ODF is not exactly LO's internal representation, there is a subtle difference there, but that is not a topic of this e-mail, so we will not lose potential reader in writing essay on the differences ;)

Since the filters I was speaking about actually use the flat ODF as an exchange file-format (read Linux Magazine 5/13, side 26 onwards).

Besides what Miklos already answered, there are several potential ways to handle the conceptual differences:

1) If the file-format allows it and LO only does not implement that part of the file-format, we document it and pray that someone will work on it. Eventually the prayer is answered or we try to work on it ourselves.

2) If the file-format does not allow that and the internal representation does not either, we try to emulate the feature in the library. For instance for Visio arrows (line-end markers) we basically try to output the paths that ODF uses pre-scaled in the library itself according to the line width.

In a similar way one could emulate things like HSK gradients where one would have to emulate them with a serie of linear RGB gradients in a way that they would look reasonably similar to the HSK ones.

There are also cases where we just cannot express a feature and we drop some elements of it, still trying to retain as much information as possible so that we keep a need of manual tweaking to minimum.

3) If the internal representation allows something, but the file-format does not, we use the ODF extended format where we put our own draft features and implement them.

For example, MS Word have list numbering restarts which ODF doesn't
have.  In such cases the documents don't import and export correctly.  I
guess you hit similar issues with your import filters even though they
were less about word processing and more about picture drawing iirc.  In
case of my example, I figured out that I can parse the exported DOC file
(e.g. using <http://logand.com/sw/cl-olefs.html> which I wrote based on
MS spec and which gives me as a bonus file positions for every data
record), find out where the numbering restart bit is located in the DOC
file and set it accordingly.  It would be better though if no such
postprocessing was needed.  In such case, is it permissible to
accomodate the "feature" in the internal LibreOffice representation or
is the internal representation strictly dictated/limited by the ODF
spec?  If the later, I guess input filters can never be made to work
correctly?

OK, it might be slightly naive to think that the fidelity might ever be 100% compared to original. But yes, we try to evolve the standard to cover the features used out there.

Btw, I really really really enjoyed our talk and look forward to you hanging at #libreoffice-dev at irc.freenode.net :)

Cheers

F.


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.