more code overview documentation.
Change-Id: I1eb1ac2c88a906ea1a4c11194d79219c684afb76
This commit is contained in:
67
README.Code
Normal file
67
README.Code
Normal file
@@ -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.
|
||||||
|
|
||||||
|
|
@@ -5,3 +5,7 @@ or Java.
|
|||||||
Note that the "awt" here has no relation to the Java awt, as far as I know. It
|
Note that the "awt" here has no relation to the Java awt, as far as I know. It
|
||||||
might be inspired by it API-wise, perhaps. (If you know differently, feel free
|
might be inspired by it API-wise, perhaps. (If you know differently, feel free
|
||||||
to improve this REDAME file.)
|
to improve this REDAME file.)
|
||||||
|
|
||||||
|
Note that toolkit/ is itself not really a toolkit, it is at root a
|
||||||
|
reasonably simple wrapper of vcl/ - if you came here looking for a
|
||||||
|
toolkit, please checkout vcl/ instead.
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
Visual Components Library is responsible for the widgets (windowing, buttons, controls, file-pickers etc.) operating system abstraction, including basic rendering (e.g. the output device).
|
Visual Components Library is responsible for the widgets (windowing, buttons, controls, file-pickers etc.) operating system abstraction, including basic rendering (e.g. the output device).
|
||||||
|
|
||||||
|
VCL provides a graphical toolkit similar to gtk+, Qt, SWING etc.
|
||||||
|
|
||||||
source/
|
source/
|
||||||
+ the main cross-platform chunk of source
|
+ the main cross-platform chunk of source
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user