Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
newtyping [2017/04/14 08:56] christian [Specifying the Attribute type] |
newtyping [2017/10/12 14:09] (current) christian [Implementation] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== PDF types in PDFtalk ====== | ====== PDF types in PDFtalk ====== | ||
- | A PDF consists of a network of objects which are connected through attributes | + | A PDF consists of a network of objects which are connected through |
The restrictions specify | The restrictions specify | ||
- | * which kind of object | + | * which type of object including forms like '' |
* whether it is or can be indirectly held by a reference | * whether it is or can be indirectly held by a reference | ||
* whether it is required or optional. | * whether it is required or optional. | ||
Line 10: | Line 10: | ||
These restrictions are called **Attribute types** in the following. | These restrictions are called **Attribute types** in the following. | ||
- | ===== Specifying the Attribute | + | ===== Attribute |
An attribute is represented as method of a PDF object. The methods are categorized in the protocol //accessing entries//. The methods name should be as close to the name in the specification. They usually start with a capital letter (unlike normal Smalltalk methods). The attribute type is defined by pragmas (method tags) in the method. The code of the method returns the object stored in or referenced by the attribute, or a default if the attribute is not required. | An attribute is represented as method of a PDF object. The methods are categorized in the protocol //accessing entries//. The methods name should be as close to the name in the specification. They usually start with a capital letter (unlike normal Smalltalk methods). The attribute type is defined by pragmas (method tags) in the method. The code of the method returns the object stored in or referenced by the attribute, or a default if the attribute is not required. | ||
Line 51: | Line 51: | ||
The symbol in the declarations above is the PDF type name of the object. | The symbol in the declarations above is the PDF type name of the object. | ||
+ | |||
+ | ===== PDF Object types ===== | ||
+ | |||
+ | The type hierarchy of PDF objects is shallow and oriented by the use of types in attributes, not by class membership. For example, there are no subtypes of Dictionary or Stream. | ||
+ | |||
+ | ===== Implementation ===== | ||
+ | |||
+ | When PDF objects are read from a file, the are syntactically differentiated as primitive object (Number, String, Name, Boolean etc.) or as Array, Dictionary or Stream. These are raw unspecified objects. | ||
+ | |||
+ | When such an object is assigned to an attribute of a Dictionary or Array with '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | (the picture has the wrong orientation...) | ||
+ | |||
+ | (proper description to come...) |