1
Give me my drawing back!
Fridrich Štrba
Straight Engineer
Dragging your proprietary files to free-sofware world
Валек Филиппов
Reverse Engineer
Slide 2
Slide 2 text
2
LibreOffice's contribution to wider FOSS eco-system
libwpg, libvisio, libcdr and libmspub
Standalone libraries
Using the same interface
Standalone framework to generate ODG
Internal class generating SVG for lazy hackers :)
Users outside LibreOffice
Inkscape reuses libvisio and libcdr in 0.49
Calligra reuses libvisio and (possibly) libcdr
Scribus recently started integration with libmspub
More users, more bug reports and (eventually) fixes
Slide 3
Slide 3 text
Done!
Slide 4
Slide 4 text
4
Visio Import filter - libvisio
Google Summer of Code 2011
Eilidh McAdam (currently Lanedo)
Started with Visio 2000 – Visio 2010 file-formats
LibreOffice 3.5 release
Extended in 2012 to ALL Visio file-format versions that ever
existed
LibreOffice 4.0 release
Visio 2013 (*.vsdx), Visio 1–5, Visio XML Drawings (*.vdx)
Stencils/master shapes extraction
Used in trunk inkscape (since December 2012)
Slide 5
Slide 5 text
5
Extending the Visio version coverage
Bug driven rewrite
A document (most likely generated by SDK)
Re-factoring of the parser
Microsoft Visio 2013 Preview
xml-based (ooxml-ish) file-format (*.vsdx)
Another rewrite of the parsers
Side-effect: support of Visio XML Drawing (*.vdx)
Versions 1 to 5
Improved understanding of the file-format
Cleaner and simpler parser
Slide 6
Slide 6 text
6
CorelDraw import filter - libcdr
Work started in late 2011
Released in LibreOffice 3.6
An interesting challenge after the success of libvisio
Continuation of a fruitful collaboration
Support for ALL CorelDraw file-formats
Starting from version 1 (code Waldo)
Ending by CorelDraw x6 released in March 2012
Slide 7
Slide 7 text
7
Extending the CorelDraw version coverage
Extending the coverage upwards
x4 and x5 (RIFF documents inside ZIP storage)
x6 (More complicated ZIP-based structure)
Extending the coverage downwards
Version 6 (first 32-bit version)
Versions 4 and 5 (16-bit versions)
Version 3 (first RIFF-based version)
Shape transform does not accumulate group transforms
Versions 2 and 1
Not RIFF based at all
Slide 8
Slide 8 text
8
Microsoft Publisher Import filter - libmspub
Google Summer of Code 2012
Brennan T. Vincent
Flagship feature of LibreOffice 4.0
Version support
MS Publisher 97
MS Publisher 98/2000
MS Publisher 2002-2013
Slide 9
Slide 9 text
Tools¡
Slide 10
Slide 10 text
10
OleToy and colupatr
Developed for
Reverse-engineering
Collaboration between reverse and straight engineers
RCA for import issues
OleToy
Support for many proprietary formats
Knobs for quick navigation and information gathering
Colupatr
Hexviewer with variable string length
“Hints” for values, comments, format for storing findings
Slide 11
Slide 11 text
11
Tools update
Added support for CPT, PICT, CDW, CPL, CDX, ICC, CMX,
QPW, RTF, ABR, BGR, ZIP
Improved support for CDR, PUB, XLS, WMF, Escher
Freehand 7, 8 and 9 support
Slide 12
Slide 12 text
¿Join?
Slide 13
Slide 13 text
13
Future file-formats to import
Google Summer of Code
LibreOffice mentoring organization in 2013 again
The possibility for a student to work with outstanding
mentors
(Altsys, Aldus, Macromedia & Adobe) Freehand
File-format partially reverse-engineered
Ripe to be a successful project
A talented student can make difference in LibreOffice and
known universe
Slide 14
Slide 14 text
14
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