File: main.xml

package info (click to toggle)
pdfedit 0.4.5-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 15,220 kB
  • ctags: 17,436
  • sloc: cpp: 156,708; xml: 8,973; makefile: 1,003; sh: 704; ansic: 688; perl: 669; yacc: 589; python: 236; lisp: 51
file content (83 lines) | stat: -rw-r--r-- 3,144 bytes parent folder | download | duplicates (2)
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>