summaryrefslogtreecommitdiff
path: root/README.Code
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2013-04-08 14:05:06 +0100
committerMichael Meeks <michael.meeks@suse.com>2013-04-08 14:06:32 +0100
commit6ec631942364a87965d0951c756073faf934cabb (patch)
tree97a2733e7c13ec8b6feb47bb419bc1aad00b181e /README.Code
parent84373a71d6bbbbeeac0d29500ed717ffd906bac4 (diff)
more code overview documentation.
Change-Id: I1eb1ac2c88a906ea1a4c11194d79219c684afb76
Diffstat (limited to 'README.Code')
-rw-r--r--README.Code67
1 files changed, 67 insertions, 0 deletions
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.
+
+