Upgrade to Pro — share decks privately, control downloads, hide ads and more …

librevenge is suite - What is new in the world of import filters and what is coming soon

librevenge is suite - What is new in the world of import filters and what is coming soon

What is new in the file-format coverage within LibreOffice? Focusing on new improved APIs which will land in LibreOffice 4.3, encouraging details about the growth of filter-writing community.

Fridrich Strba

February 10, 2014
Tweet

More Decks by Fridrich Strba

Other Decks in Technology

Transcript

  1. 1
    Librevenge is suite
    Fridrich Štrba
    LibreOffice Contributor
    What is new in the world of import filters
    and what is coming soon

    View Slide

  2. 2
    Agenda
    New developments in the importer
    world
    librevenge and libodfgen
    What is next?

    View Slide

  3. New developments in
    the importer world

    View Slide

  4. 4
    New babies in the family
    Libetonyek
    Support first for Keynote documents
    Extending support to Numbers and Pages
    Libe-book
    Supports a host of e-book file-formats
    Libfreehand
    Started the implementing of Freehand import filter
    Libabw
    Now we can load documents of our “cousin”
    … and more still to come

    View Slide

  5. 5
    New document types
    Previously only text documents and graphics
    Text documents based on libwpd API
    Libwpd, libwps, libmwaw
    Graphics based on libwpg API
    Libwpg, libvisio, libcdr, libmspub, libfreehand
    New presentation support
    Presentations based on libetonyek API
    Libwpg's API was too limited for presentations
    Need to extend to spreadsheets too
    Libmwaw
    Libwps

    View Slide

  6. libodfgen and librevenge

    View Slide

  7. 7
    libodfgen
    ODF Generation was duplicated in several places
    LibreOffice writerperfect module
    Standalone writerperfect
    Calligra sources
    It makes sense to collect all bugs in the same place
    OdtGenerator class
    Implementations of WPXDocumentInterface
    OdgGenerator class
    Implementation of WPGPaintInterface
    OdpGenerator class added later
    Implementation of KEYPresentationInterface
    OdfDocumentHandler interface
    SAX-like interface to output XML in a generic way

    View Slide

  8. 8
    Librevenge
    Interface of each document type in different library
    Libwpd, libwpg, libetonyek
    The common types in libwpd
    Libwpd is a text-related library
    All others had to link to it
    Consolidating the types and interfaces
    Interfaces
    RVNGTextInterface, RVNGDrawingInterface,
    RVNGPresentationInterface, RVNGSpreadsheetInterface
    Types
    RVNGProperty, RVNGPropertyList, RVNGPropertyListVector
    Extended the capacities
    RVNGBinaryData, RVNGString, RVNGStringVector

    View Slide

  9. 9
    Librevenge-stream
    RVNGInputStream interface
    Extended to handle structured documents a bit more
    efficiently
    Several implementations:
    RVNGFileStream
    Implementation using file name
    RVNGStringStream
    Implementation using a buffer of data
    RVNGDirectoryStream
    Accesses a directory structure as if it was a structured document
    OLE2 and ZIP documents handled transparently
    No need to know what is the container type
    Gives the responsibility to the implementers!

    View Slide

  10. 10
    Librevenge-generators
    Useful implementations of the different interfaces
    Raw Generators
    Implementations of the different RVNG interfaces
    printing callbacks called and properties passed
    Used for regression testing
    CSV generator for spreadsheets, HTML, Text generators
    SVG generators
    Exception: SVG generator for drawings
    included in librevenge core library
    Historical reasons
    ODF generators in libodfgen
    More complicated
    Historical reasons

    View Slide

  11. 11
    Advantage of the design
    Parser libraries independent and self-contained
    Much easier life of filter writers
    Enough to focus on the structure of document to parse
    Call the interface callbacks that one needs
    Avoid sucking in unrelated libraries
    Librevenge itself and libodfgen have boost as build-time dependency
    No need to link text-related libraries in drawing application
    Considerable reduction of code duplication
    Less risk to have bugs fixed in one place and hanging
    around in another
    Faster to start a library skeleton

    View Slide

  12. What is next?

    View Slide

  13. 13
    Future file-formats to import?
    Google Summer of Code
    The possibility for a student to work with outstanding
    mentors
    Valentin Filippov
    David Tardon
    Your faithful
    Several formats ready for straight engineering
    Apple Numbers, Pages
    Adobe PageMaker
    Adobe InDesign
    … and any other you are interested in

    View Slide

  14. 14
    Impact within LibreOffice and the known universe
    Happy users will reward you
    You will be the hero of the people who can now read their documents...
    … and they will get on your nerves listing features that are not converted.
    Users outside LibreOffice
    Inkscape reuses libvisio and libcdr in 0.49
    Calligra reuses libvisio and (possibly) libcdr since 2.5
    Great fun within the community

    View Slide

  15. 15
    All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
    (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos
    and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.
    QA and Stoning session

    View Slide