From 6ec631942364a87965d0951c756073faf934cabb Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Mon, 8 Apr 2013 14:05:06 +0100 Subject: more code overview documentation. Change-Id: I1eb1ac2c88a906ea1a4c11194d79219c684afb76 --- README.Code | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 README.Code (limited to 'README.Code') diff --git a/README.Code b/README.Code new file mode 100644 index 000000000000..71fb3e49c71c --- /dev/null +++ b/README.Code @@ -0,0 +1,67 @@ +* 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, for wihch you can read the API +docs here http://api.libreoffice.org/. This re-uses the (extremely +generic) APIs we provide for macro scripting in StarBasic. + + The best way to add a generally useful feature to LibreOffice +is to work on the code code 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 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: + + 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 + svx/ - graphics related helper code, including much of 'draw' / 'impress' + sfx2/ - core framework: document model / load/save / signals for actions etc. + framework - UNO wrappers around the core framework, responsible for building + toolbars, menus, status bars, and the chrome around the document + using widgets from VCL, and XML descriptions from */uiconfig/ files + + Then applications + + 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: + + basebmp/ - enables a VCL compatible rendering API to render to bitmaps, + as used for LibreOffice on-line, Android, iOS etc. + 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/ - code to render and manage document drawing shapes and break + them down into primitives we can render more easily. + +** 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. + + -- cgit