
Programming Guide
Complete C++ source is provided for the sample utilities.
This allows the part programmer to use them with any C++ compiler, extend or
modify them, and port them to other languages. The source code is hoped to be
self-documenting.
The source for the sample utilities can be found in the UTILS subdirectory.
A makefile is provided to build the sample utilities into a library and the
sample parts link with this library.
The following sample utilities are provided:
- ALTPOINT provides C++ class versions of the standard OpenDoc types of
ODPoint, ODRect, and ODToolSpaceRect.
- ALTPOLY provides C++ class versions of the standard OpenDoc types of
ODPolygon, ODContour, ODPolygonData, and ODTempPolygon. It also contains a
helper class PolyEdgeIterator.
- ODEXCEPT provides macros, functions and a C++ class that help with the
implementation of exceptions. This utility is documented in the recipe "Exception Handling".
- FOCUSLIB provides C++ class that reduces the amount of code that needs to
be written in the ODPart::Draw method. Focuslib provides methods
that setup and cleanup a GPI HPS using the shape and clipping information from
OpenDoc. See "FocusLib Utility" for more information.
- LINEOPS provides geometric operations on lines in 2-D space.
- ODDEBUG provides sample debugging utilities, for assertions, safe
type-casting and logging.
- ODUTILS provides macros and functions for use particularly with
reference-counted objects.
- TEMPOBJ provides C++ template classes for exception-safe temporary object
references. TempObj and TempRef are simple template classes that act as a
transparent wrapper around an OpenDoc object pointer. The temp object can be
used wherever a pointer to the object would be used. When the temp object goes
out of scope, the object it wraps will be deleted (in the case of TempObj) or
released (in the case of TempRef). This includes the case where an exception
is thrown; the wrapper is exception-safe. This utility is documented in the
recipe "Temporary References and Objects".
[ Top | Previous | Next | Contents | Index | Documentation Homepage ]