Read-only LibreOffice core repo - no pull request (use gerrit instead https://gerrit.libreoffice.org/) - don't download zip, use https://dev-www.libreoffice.org/bundles/ instead
C++ Java XSLT Makefile Python Perl Other
Switch branches/tags
Latest commit cb62872 Jan 3, 2018 Armin Le Grand Armin Le Grand RotateFlyFrameFix: im/export rotation in deg
Unified im/export of rotation at FlyFrame Graphics to
not write their internal old 10th degree format, but to
use deg notation and the correct orientation. Extended
the mechanism to use tooling (SdXMLImExTransform2D) to
completely read/write 'draw:transform' statements. Added
quite some comments due to stuff in the old mechanism(s)

Change-Id: I7d265c1a05532a0dd9b921e383c10b477b4c8846
Reviewed-on: https://gerrit.libreoffice.org/47335
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
Permalink
Failed to load latest commit information.
.git-hooks clang-format: restore lost warning on touching formatted file without… Dec 15, 2017
UnoControls Fix typos Dec 19, 2017
accessibility lokdialog: Allow switching language of some of the ResMgr's. Dec 22, 2017
android tdf#106370 Android: add ability to insert pictures Nov 16, 2017
animations loplugin:salcall fix functions Dec 11, 2017
apple_remote Following tdf#111561: no need to autorelease "elements" (apple_remote) Oct 12, 2017
avmedia lokdialog: Allow switching language of some of the ResMgr's. Dec 22, 2017
basctl remove SfxUsrAnyItem typedef Jan 4, 2018
basegfx basegfx: extract svg path import/export test to own file Jan 4, 2018
basic Silence loplugin:unnecessarycatchthrow with --disable-debug Jan 4, 2018
bean Fix typos Dec 28, 2017
bin Revert "unused SID command in starmath" Dec 22, 2017
binaryurp inline use-once typedefs Dec 19, 2017
bridges new loplugin: convertlong Dec 21, 2017
canvas Fix typos Jan 2, 2018
chart2 loplugin:passstuffbyref improved return in sd,various Jan 2, 2018
cli_ure tdf#113787: always require version file with config for CLI assemblies Nov 24, 2017
codemaker Fix typos Dec 29, 2017
comphelper loplugin:unusedfields Jan 4, 2018
compilerplugins loplugin:unusedfields Jan 4, 2018
config_host request installation of langpack via packagekit Dec 22, 2017
configmgr loplugin:passstuffbyref improved returns Dec 23, 2017
connectivity tdf#104986 move named parameters substitution into generic layer Jan 4, 2018
cppcanvas tdf#42949 Fix some Include What You Use warnings Dec 22, 2017
cppu loplugin:passstuffbyref improved returns Dec 23, 2017
cppuhelper loplugin:passstuffbyref improved returns Dec 23, 2017
cpputools loplugin:includeform: cpputools Oct 23, 2017
cui drop FrameDirListBox typedef Jan 4, 2018
dbaccess loplugin:passstuffbyref more return improvements Jan 3, 2018
desktop loplugin:passstuffbyref more return improvements Jan 3, 2018
dictionaries @ f8a5164 Updated core Dec 21, 2017
distro-configs Add JVM support to Flatpak Jan 3, 2018
drawinglayer loplugin:unnecessaryparen improve return check Dec 29, 2017
dtrans Fix typos Dec 19, 2017
editeng loplugin:passstuffbyref more return improvements Jan 3, 2018
embeddedobj loplugin:passstuffbyref improved return in various Dec 29, 2017
embedserv loplugin:salcall (clang-cl) Dec 15, 2017
emfio loplugin:passstuffbyref improved return in emfio,writerfilter Dec 31, 2017
eventattacher No need to keep these whitelisted functions decorated with SAL_CALL Dec 14, 2017
extensions loplugin:passstuffbyref improved return in emfio,writerfilter Dec 31, 2017
external upload libqxp 0.0.1 Jan 2, 2018
extras Gallery-svg: shrink gallery svg files Jan 4, 2018
filter loplugin:passstuffbyref improved return in various Dec 29, 2017
forms lokdialog: Allow switching language of some of the ResMgr's. Dec 22, 2017
formula lokdialog: Allow switching language of some of the ResMgr's. Dec 22, 2017
fpicker loplugin:passstuffbyref improved return in lotuswordpro Dec 31, 2017
framework drop CmdToXGraphicNameAccess typedef Jan 4, 2018
helpcompiler Replace lists by vector and deque (helpcompiler) Nov 26, 2017
helpcontent2 @ 7c78c30 Updated core Jan 3, 2018
hwpfilter Fix typos Dec 29, 2017
i18nlangtag Add Plautdietsch [pdt-CA] to language listbox Dec 4, 2017
i18npool crash in sc, make TextSearch thread safe Dec 30, 2017
i18nutil tdf#114681: Adding support for case folding in Glagolitic Jan 2, 2018
icon-themes tdf#75256 Sifr update opacity fix - fixed SVG files Jan 2, 2018
idl TypedWhichId in svx part 1 Dec 21, 2017
idlc loplugin:salcall fix functions Dec 11, 2017
include tdf#104986 move named parameters substitution into generic layer Jan 4, 2018
instsetoo_native tdf#108580: integrate vc_redist.exe into MSI Dec 18, 2017
io inline use-once typedefs Dec 19, 2017
ios iOS jump version for prelinking Jan 3, 2018
javaunohelper loplugin:salcall fix functions Dec 11, 2017
jurt Fix typos Dec 19, 2017
jvmaccess loplugin:includeform: jvmaccess Oct 23, 2017
jvmfwk inline use-once typedefs Dec 19, 2017
l10ntools inline use-once typedefs Dec 19, 2017
librelogo tdf#113592 LibreLogo: add fallback localization to fix platform issues Nov 5, 2017
libreofficekit LOK: support tile-dumping in tilebench Dec 23, 2017
lingucomponent loplugin:salcall (macOS) Dec 15, 2017
linguistic inline use-once typedefs Dec 19, 2017
lotuswordpro ofz#4917 Direct-leak Jan 3, 2018
m4 Fix typos Dec 14, 2017
mysqlc loplugin:salcall fix functions Dec 11, 2017
nlpsolver Typos Feb 3, 2017
o3tl Add test for o3tl::saturating_add Oct 26, 2017
odk Bump copyright year to 2018 Jan 1, 2018
offapi Fix typos Dec 17, 2017
officecfg Reduce large VARCHAR columns of the wizard sample databases to fit Fi… Jan 1, 2018
onlineupdate Updater Icon: Shrink svg file Dec 30, 2017
oovbaapi Fix typos Nov 13, 2017
oox loplugin:unusedfields Jan 4, 2018
opencl Explicitly qualify ICU types with icu:: namespace Dec 19, 2017
osx gbuild-to-ide added -DLIBO_INTERNAL_ONLY to CXXFLAGS Feb 2, 2017
package ofz#4806 Infinite loop Dec 27, 2017
postprocess tdf#108580: integrate vc_redist.exe into MSI Dec 18, 2017
pyuno loplugin:salcall fix functions Dec 11, 2017
qadevOOo tdf#45904 Move _TableAutoFormat Java tests to C++ Jan 4, 2018
readlicense_oo Bump copyright year to 2018 Jan 1, 2018
registry loplugin:simplifybool for negation of comparison operator Nov 23, 2017
remotebridges loplugin:salcall fix functions Dec 11, 2017
reportbuilder Fix typos Dec 14, 2017
reportdesign loplugin:passstuffbyref improved return in sd,various Jan 2, 2018
ridljar i#32546# - Java UnoRuntime.getUniqueKey/generateOid do not work reliably Aug 25, 2017
sal Remove broken test Jan 2, 2018
salhelper loplugin:salcall fix functions Dec 11, 2017
sax loplugin:passstuffbyref even more return improvements Dec 24, 2017
sc remove SfxUsrAnyItem typedef Jan 4, 2018
scaddins loplugin:salcall fix functions Dec 11, 2017
sccomp lokdialog: Allow switching language of some of the ResMgr's. Dec 22, 2017
schema revert fix typos Jul 19, 2017
scp2 tdf#108580: integrate vc_redist.exe into MSI Dec 18, 2017
scripting loplugin:passstuffbyref improved return in sd,various Jan 2, 2018
sd drop Cache typedef Jan 4, 2018
sdext loplugin:unusedfields Jan 4, 2018
setup_native Bump copyright year to 2018 Jan 1, 2018
sfx2 remove SfxUsrAnyItem typedef Jan 4, 2018
shell call g_variant_unref on return value Dec 22, 2017
slideshow loplugin:passstuffbyref improved return in xmlhelp,slideshow Dec 29, 2017
smoketest loplugin:includeform: smoketest Oct 23, 2017
solenv basegfx: extract svg path import/export test to own file Jan 4, 2018
soltools loplugin:constparams Dec 7, 2017
sot loplugin:passstuffbyref improved returns in vcl Dec 23, 2017
starmath ofz#4845 avoid oom Dec 31, 2017
stoc loplugin:salcall fix functions Dec 11, 2017
store loplugin:salcall fix functions Dec 11, 2017
svgio loplugin:passstuffbyref improved return in sd,various Jan 2, 2018
svl loplugin:unusedfields Jan 4, 2018
svtools drop OAddressBookSourceDialogUnoBase typedef Jan 4, 2018
svx drop FrameDirListBox typedef Jan 4, 2018
sw drop some unused typedefs in UnoFrameWrap_traits Jan 4, 2018
swext tdf#39468: Translate some random German comments and terms Sep 26, 2017
sysui App icons: shrink svg files to a minimum Dec 31, 2017
test tdf#45904 Move _TableAutoFormat Java tests to C++ Jan 4, 2018
testtools loplugin:salcall fix functions Dec 11, 2017
toolkit loplugin:unusedfields Jan 4, 2018
tools loplugin:singlevalfields improve copy constructor check Jan 3, 2018
translations @ 241b014 Updated core Jan 3, 2018
ucb drop ULONG typedef Jan 4, 2018
ucbhelper loplugin:passstuffbyref even more return improvements Dec 24, 2017
udkapi Fix typos Dec 15, 2017
uitest fix uitest/writer_tests/data/3pages.odt Nov 25, 2017
unodevtools loplugin:unnecessaryparen: Warn about parentheses around literals Nov 27, 2017
unoidl loplugin:includeform: unoidl (macOS) Oct 24, 2017
unoil tdf#113787: always require version file with config for CLI assemblies Nov 24, 2017
unotest loplugin:salcall fix functions Dec 11, 2017
unotools loplugin:unusedfields Jan 4, 2018
unoxml Fix typos Dec 27, 2017
ure Fix quoting May 30, 2017
uui loplugin:unusedfields Jan 4, 2018
vbahelper inline use-once typedefs Dec 19, 2017
vcl drop ChecksumType typedef Jan 4, 2018
winaccessibility Fix spelling in comments Dec 28, 2017
wizards Access2Base - FIX getString() on LONGVARCHAR fields Dec 14, 2017
writerfilter loplugin:passstuffbyref more return improvements Jan 3, 2018
writerperfect loplugin:passstuffbyref more return improvements Jan 3, 2018
xmerge Revert "Fix typos" May 18, 2017
xmlhelp loplugin:unusedfields Jan 4, 2018
xmloff RotateFlyFrameFix: im/export rotation in deg Jan 4, 2018
xmlreader clang-tidy modernize-use-emplace in various Sep 14, 2017
xmlscript loplugin:passstuffbyref improved returns Dec 23, 2017
xmlsecurity Turn on clang-format for these files Jan 3, 2018
.buckconfig Add build toolchain to upload LibreOffice API to Maven Central Dec 3, 2015
.buckversion Add build toolchain to upload LibreOffice API to Maven Central Dec 3, 2015
.clang-format Retrofit "KeepEmptyLinesAtTheStartOfBlocks: false" into .clang-format Nov 8, 2017
.editorconfig We have some Objective-C source files, too Dec 1, 2017
.gitattributes Ignore schema files for src tarball generation Aug 30, 2016
.gitignore .gitignore vscode ide files Dec 24, 2017
.gitmodules binfilter.die.die.die Nov 9, 2012
.gitreview git-review integration: .gitreview for core repository added Jul 5, 2012
BUCK Add build toolchain to upload LibreOffice API to Maven Central Dec 3, 2015
COPYING Licencing files Jan 11, 2011
COPYING.LGPL Licencing files Jan 11, 2011
COPYING.MPL Targetted text updates, with seasonable changes before l10n freeze. Dec 13, 2013
Library_merged.mk gbuild: Remove MSVC 2013 legacy code Apr 21, 2017
Makefile.fetch tdf#113532 Add Arabic fonts into default installation Dec 21, 2017
Makefile.gbuild updater: workaround cygwin python bug around command line arguments Aug 5, 2017
Makefile.in add html fuzzer Dec 21, 2017
README.Solaris remove use of Archive::Zip Jun 4, 2016
README.cross Fix typos Aug 17, 2017
README.md iOS, bump version to 11.2 Dec 30, 2017
Repository.mk Blind fix Dec 23, 2017
RepositoryExternal.mk tdf#108580: integrate vc_redist.exe into MSI Dec 18, 2017
RepositoryFixes.mk Remove MinGW support Feb 10, 2017
RepositoryModule_build.mk migrate to boost::gettext Jul 21, 2017
RepositoryModule_host.mk migrate to boost::gettext Jul 21, 2017
TEMPLATE.SOURCECODE.HEADER Add fill-column: 100 to the Emacs mode line Nov 8, 2016
autogen.sh Revert "Goodbye autogen.lastrun" Sep 22, 2017
config.guess Fix typos Jan 7, 2016
config.sub iOS, add support for arm64 Jun 7, 2017
config_host.mk.in tdf#108580: integrate vc_redist.exe into MSI Dec 18, 2017
config_host_lang.mk.in gbuild: allow to react on change in configured langs Mar 25, 2015
configure.ac iOS, bump version to 11.2 Dec 30, 2017
download.lst upload libqxp 0.0.1 Jan 2, 2018
g tdf#105204: more ShellCheck nitpicks for g Apr 27, 2017
install-sh update install-sh to the automake-1.11 version Feb 26, 2012
leak-suppress.txt migrate to boost::gettext Jul 21, 2017
lo.xcent.in We don't build the Apple Remote code when sandboxed Mar 4, 2016
logerrit Improve error message on ssh login failure. Sep 6, 2017
sanitize-ubsan-blacklist file for ci-based ubsan build Oct 31, 2015

README.md

LibreOffice

Coverity Scan Build Status CII Best Practices

LibreOffice is an integrated office suite based on copyleft licenses and compatible with most document formats and standards. Libreoffice is backed by The Document Foundation, which represents a large independent community of enterprises, developers and other volunteers moved by the common goal of bringing to the market the best software for personal productivity. LibreOffice is open source, and free to download, use and distribute.

A quick overview of the LibreOffice code structure.

Overview

You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs here and here. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.

The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.

The build chain and runtime baselines

These are the current minimal operating system and compiler versions to run and compile LibreOffice, also used by the TDF builds:

  • Windows:
    • Runtime: Windows 7
    • Build: Cygwin + Visual Studio 2015 Update 3
  • macOS:
    • Runtime: 10.9
    • Build: 10.12 + Xcode 8
  • Linux:
    • Runtime: RHEL 6 or CentOS 6
    • Build: GCC 4.8.1 or Clang
  • iOS (only for LibreOfficeKit):
    • Runtime: 11.2 (only support for newer i devices == 64 bit)
    • Build: Xcode 9.0 and iPhone SDK 11.2

At least Clang 3.4.2 is known to be too old to pass the configure.ac check "whether $CXX supports C++17, C++14, or C++11" in its current form (due to the #pragma GCC diagnostic ignored "-Wpragmas" that it does not understand).

If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 3.8. Since Xcode doesn't provide the compiler plugin headers, you have to compile your own Clang to use them on macOS.

You can find the TDF configure switches in the distro-configs/ directory.

To setup your initial build environment on Windows and macOS, we provide the LibreOffice Development Environment (LODE) scripts.

For more information see the build instructions for your platform in the TDF wiki.

The important bits of code

Each module should have a README file inside it which has some degree of documentation for that module; patches are most welcome to improve those. We have those turned into a web page here:

http://docs.libreoffice.org/

However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:

Module Description
sal/ this provides a simple System Abstraction Layer
tools/ this provides basic internal types: 'Rectangle', 'Color' etc.
vcl/ this is the widget toolkit library and one rendering abstraction
framework UNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files
sfx2/ legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc.
svx/ drawing model related helper code, including much of Draw/Impress

Then applications

Module Description
desktop/ this is where the 'main' for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop
sw/ Writer
sc/ Calc
sd/ Draw / Impress

There are several other libraries that are helpful from a graphical perspective:

Module Description
basegfx/ algorithms and data-types for graphics as used in the canvas
canvas/ new (UNO) canvas rendering model with various backends
cppcanvas/ C++ helper classes for using the UNO canvas
drawinglayer/ View code to render drawable objects and break them down into primitives we can render more easily.

Rules for #include directives (C/C++)

Use the "..." form if and only if the included file is found next to the including file. Otherwise, use the <...> form. (For further details, see the mail Re: C[++]: Normalizing include syntax ("" vs <>).)

The UNO API include files should consistently use double quotes, for the benefit of external users of this API.

Finding out more

Beyond this, you can read the README files, send us patches, ask on the mailing list libreoffice@lists.freedesktop.org (no subscription required) or poke people on IRC #libreoffice-dev on irc.freenode.net - we're a friendly and generally helpful mob. We know the code can be hard to get into at first, and so there are no silly questions.