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 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<!-- vim:tabstop=4:shiftwidth=4:noexpandtab:textwidth=80
-->
<!-- Description of kernel design. All chapters specific for kernel should be
placed here. If description chapter (component) is written in separate
file, entity has to be defined in design_doc.xml file (in entity
declaration part)
-->
<part id="kernel_part">
<title>Kernel design description</title>
<para>
Kernel is object layer which provides interface for manipulation with
pdf document, its high level entities (like pages, outlines and
annotations) and all properties of entities. All these objects keeps
document logic inside and provides interface for higher layer for
simple manipulation. Higher layers (GUI and script in our case)
should use only these objects to get or change document related
information.
</para>
<para>
All kernel stuff is stored in src/kernel directory and consists of set
of classes. Classes are separated to 2 groups according logic related to
pdf which is implemented inside class:
<itemizedlist>
<listitem>
<para>
<emphasis>High level</emphasis> objects - which wrapps pdf high
level entities, such as pages (<xref linkend="kernel_part_cxref"/>), annotations
(<xref linkend="kernel_part_cannotation"/>), outlines, whole
document (<xref linkend="kernel_part_cpdf"/>).
</para>
<para>
Each object has certain properties which are defined by pdf
specification and those are returned in <emphasis>low level</emphasis>
objects form. If pdf entity contains other high level entity in
its substructure (like pages contains annotations etc.), this
entity is responsible for creation and maintainance of such
high level object. CPdf is then root of all high
level objects.
</para>
</listitem>
<listitem>
<emphasis>Low level</emphasis> objects - which wrapps pdf data
types.
<footnote>
<para>
Pdf stores all data and meta data in object form. Such
objects are strongly typed and pdf specification describes
how each data type is stored to document.
</para>
</footnote>
According value type character (what can be stored inside) we
will distinguish 2 cathegories of data types:
<itemizedlist>
<listitem>
<emphasis>Simple types</emphasis> which holds simple
data such as integral values, floating point value,
string, name, operator, etc.
</listitem>
<listitem>
<emphasis>Complex types</emphasis> which holds other
data types in their inside such as array, dictionary
and streams.
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</para>
<para>
Following chapters will focus more deeply on particular parts of kernel
stuff. At first, all classes which are used as interface objects for
higher layers are described. Then some kernel classes which are not
part of interface but they are used internally by interface classes.
Finally there is description how document changes and revisions are
handled.
</para>
&kernel_interface_objects;
&kernel_helper_objects;
&kernel_layer_model;
</part>
|