File: Mainpage.dox

package info (click to toggle)
calligra 1%3A2.4.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 290,028 kB
  • sloc: cpp: 1,105,019; xml: 24,940; ansic: 11,807; python: 8,457; perl: 2,792; sh: 1,507; yacc: 1,307; ruby: 1,248; sql: 903; lex: 455; makefile: 89
file content (69 lines) | stat: -rw-r--r-- 3,400 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
 * \mainpage Flake
 *
 * The Flake library is a low level library for all kinds of graphical content
 * to be placed on any Calligra canvas. This includes a line to text-areas or
 * even movies.  Just as important, this library will include tools to manipulate
 * the graphical content. At least at the level of Flake objects.  This goes from
 * moving/rotating the object to a basis for complex brushes for a paint program.

 * <b>Who uses Flake</b><br>
 * <img src="../flake.png">
 * Flake is a middle layer between the applications and the content providers.
 * The applications will allow flake to be plugged in by implementing the
 * KoCanvasController interface while providers of content (like a chart engine
 * or a text component) will extend KoShape and optionally KoToolBase to do their
 * work.
 *
 * A <b>shape</b> is a rectangle or a text or a movie.  A shape paints itself and has content.
 * A <b>Tool</b> get user input. Tools do things on data, tools do things on shapes.
 * Both shapes and tools are plugins. So they are independent of applications.
 * For example; I have a textshape that paints text.  It comes with a texttool that
 * takes mouse and keyboard events and alters the text that the textshape shows.
 * This idea of combining a shape and a text is done in flake by "ID"s .  Each
 * shape has an ID and a tool has an ID.   If they have the same ID they belong
 * together.
 * Example;  I select a text shape and the toolbox will show a icon to activate the
 * text tool.
 *
 * The way that a shape is kept separate from the application and from the Flake
 * layer is similar to how a widget in a GUI is kept separate from the application.
 * The shape inherits from the abstract KoShape class and all the logic embedded in
 * the KoShape class is enough for the flake layer to do all things with it like
 * positioning and moving as well as rotating and deleting it.
 * Just like a widget does not know the difference between painting on one app, or
 * another a shape will not know the difference. The flake library will take care
 * of all details.
 *
 * It is common to combine a shape-plugin with one or more tools which are made
 * specifically to work on that shape type. So, a text shape comes with a tool that
 * knows how to address the shape not only by the abstract KoShape class, but also
 * by the KoTextShape API and is therefor able to alter the data that that shape
 * displays. In this case text.

 * Flake natively only has a vector shape. All other types of shapes (including the
 * text one used in the example above) are plugins and not part of Flake itself.
 *
 *
 * Use KoShape as a base object for any application-specific graphical
 * content, and extend KoShapeContainer for objects that can contain others.
 *
 * KoShape is the base class for all flake objects. Flake objects extend it
 * to allow themselves to be manipulated by the KoToolBase s. The content of such an
 * object is independent and based on the model of the data this object represents.
 *
 * If you want to be a supplier of shape objects; create a library with a KoShapeFactoryBase
 * class and install a .desktop service file with the following content:
 *
@verbatim
[Desktop Entry]
Encoding=UTF-8
Name=My Flake Shapes Plugin
ServiceTypes=Calligra/Shape
Type=Service
X-KDE-Library=myflakeshapesplugin
X-Flake-MinVersion=1
X-Flake-PluginVersion=1
@endverbatim
 *
 */