Presentation
LibreOffice is an open source Office Suite.
The LibreOffice suite
The LibreOffice suite contains the following applications:
- Word processor: LibreOffice Writer ("swriter" component, originally StarWriter)
- Spread sheet: LibreOffice Calc ("scalc" component, originally StarCalc)
- Presentation program: LibreOffice Impress
- Vector Graphics editor and diagramming tool: LibreOffice Draw ("sdraw" component, originally StarDraw)
- Formula editor: LibreOffice Math
- Database management program: LibreOffice Base
A Short history
- 1985: StarWriter 1.0 (SW) for DOS
- 1986: StarOffice (by StarDivision)
- 1994: StarOffice 2.0 for Windows 3.1, with StarWriter (SW), StarCalc (SC), StarDraw (SD) and StarBase (SB)
- 1999: Sun acquires StarOffice
- 2002: OpenOffice 1.0, as free software
- 2005: OpenOffice 2.0. OASIS OpenDocument standard. The Open Document Format (ODF) is an XML-based file format for spreadsheets, charts, presentations and word processing documents.
- 2010: Oracle acquires Sun -> Oracle Open Office 3.3
- 2010: The Document Foundation is created. LibreOffice forks from OpenOffice.
- 2011: Apache OpenOffice (Oracle donates OpenOffice to Apache Software Foundation).
Libreoffice subsystems overview
Applications
Libreoffice main applications are Libreoffice writer, Libreoffice calc,
Libreoffice draw, Libreoffice impress, Libreoffice base... : see concepts / applications for more.
These applications are in their own folder at the top of the source code directory.
GUI, Graphics and third party graphic libraries
Applications user interface use common GUI components:
- the common user interface (cui) : contains dialogs used by more than one application
- the UNO Framework : Newer GUI framework, responsible for building toolbars, menus, status bars, and the chrome around the document.
- the svx framework : Older GUI framework, dispatches actions to the document shells; handles document load and save, invokes import and export filters.
- svtools : common dialogs, file and print dialogs, wizards, vcl filters, helper code
- the visual component library (vcl): windowing, buttons, control toolkit library
- see concepts / GUI for more
Applications and GUI components rely on graphic components
- canvas: Canvas rendering - Graphical output layer, for rendering application content. It exposes the UNO rendering::XCanvas interfaces. The canvas framework is the successor of the system GUI and graphics backend VCL.
- basegfx: algorithms and data-types for graphics as used in the canvas
- drawinglayer : drawing API. Objects are drawn by using a display list / primitives.
- see concepts / graphics for more
These graphics components rely on third party software like: harfbuzz, libeot, libpng, libwebp, skia...
Component object model
Universal Network Objects (UNO) is the component technology for LibreOffice.
It uses:
- the C++ Binary UNO Runtime (cppu): C++ UNO Core implementation and type definitions
- the cppu helper: Boostraps UNO (implements createInstance)
- the UNO registry : The registry holds the system's UNO type information in a database (modules, services, interfaces...)
The Universal Content Broker (ucb) provides an UNO interface to access different data sources and functions.
Scripting, libreoffice API
Libreoffice implements
Document formats, Filters
Libreoffice implements many document formats or filters to load or save documents in various formats:
xml office filter, microsoft office filter, writer perfect, etc.
Lower layers
Lower layers include:
Libreoffice Writer overview
swriter component dependencies
To view swriter dependencies:
SWriter is the top executable application. It depends on sw (application logic), swui (user interface) and winlauncher (windows launcher).
It relies on the subsystems described above
- User interface and graphics components
- UNO runtime, helper, registry.
- The starbasic interpreter, vbahelper, the set of UNO API exposed
- Filters and Documents format
- Lower layers like SAL, etc.
swriter source code directory
Go to the Directory explorer to view the content of the swriter dedicated code.
/sw - Libreoffice writer
/inc - includes
/qa - unit tests, test data
/sdi - description of slots / actions
/source - source code for module
/core - core business logic
/filter - filters to load / save documents in a specific format
/ui - user interface
/uibase - base code attached to the user interface
/uiconfig - XML User Interface descriptions
/util - Components description