to such questions as "Shall I use low-level or high-level, procedural or object-oriented libraries?," "Which parts can be based on third-party graphics kernels?," and "How many off-the-shelf modules can I use?"
Graphics applications consist of three main parts: user interface, object generation, and data management. The development strategy for an enterprise-tailored application can take two main paths: Use a graphics kernel with a flexible programming interface or deploy a library and build the program from scratch. Libraries can be procedural or object-oriented, wrapped as DLLs.
Advantages of Procedural Libraries
The advantage of procedural libraries is that they can be used with standard DLL-compatible development tools as well as with comfortable tools, suc
h as Visual Basic and Turbo Pascal. Object-oriented class libraries can usually be used only with the compiler that created the libraries. However, most library producers offer versions for the market-leading C++ compilers.
Class libraries offer the well-known advantages of object-oriented programming, including overriding, overloading, and inheritance. Inheritance is especially beneficial during the design of a user interface when you can define subsequent windows in a user dialog box as instances or as derived classes of one superclass. If you use a high-level GUI library, you don't even need to know the internal structure of the classes.
If you want to develop a CAD, mapping, or business visualization application, things can get complicated. There are two basic routes you can take: Build your own visual application or modify a shipping CAD or mapping application. There are several CAD packages on the market, but most come with inflexible APIs. C++ class libraries, on the other hand, offer open
design possibilities but require a deep knowledge of graphics data management and a keen understanding of the OS's features, such as its event-handling and basic I/O functions.
Best of Both Worlds
But some vendors offer a mixture of both approaches and ship a graphics kernel with extended APIs and an appropriate programming library. In such cases, the application framework is ready to use, and you can tailor it with the library functions.
Condor, developed by
the German software publisher SOFA (Marburg, Germany), is an example of a development system that consists of a CAD program and a programming interface wrapped in a DLL. The package is available as both a procedural library (Condor 3.2) and a class library (Condor 4.0).
The Condor CAD kernel of both versions is a ready-to-use application with a wide range of CAD features, such as object generation and drawing. The Condor 3.2 DLL/API contains more than 200 additional functions. But the DLL can also
be the basis for stand-alone products. In both cases, DLL-compatible C or Pascal compilers are necessary. As long as you use the CAD kernel, however, a separate interface builder is not required.
Condor 4.0 offers a much more flexible object-oriented class library. Its CAD kernel is based on the Condor C++ class library and on the Microsoft Foundation Classes (MFC) and comes completely documented with all sources. The MFC covers the interface functionality, whereas the Condor class library provides the drawing functionality. Both systems can be used for the development of all-purpose 2-D graphics applications under Windows 3.1. Their domain, however, is in the development of MCAD (i.e., mechanical engineering) applications.
The Condor systems ship with sample programs and documentation written in German. An English version will be available during the second half of this year. Source code versions are available on request. Applications developed and shipped with Condor include the price of the Con
dor development system and an additional per-copy run-time fee for applications.
Database Management
In contrast to Condor, which concentrates on the representation of graphical data,
DbCAD 1.4 from Abaco
(Mantova, Italy) provides database management and administration for graphics applications. DbCAD's architecture is based on an API, a graphics database, manipulation functions for vector and bit-mapped data, and a graphical windowing system.
The DbCAD system works concurrently in a client/server mode. The server provides the main functionality, including a DBF database and the visualization functions that the client uses. The client operates as the front end of the database and can manipulate the server window via a DLL interface to visualize the data. You can also use DbCAD with external databases, such as Access and FoxPro. In additon, SQL and Open Database Connectivity (ODBC) interfaces, as well as DWG and DXF filters, are provided.
DbCAD 1.4 ship
s with a sample program and documentation written in English. The source code of this procedural library is not available for users, but Abaco plans to integrate it in a future release.
The architecture of the Heron CAD development system from ICAT (Schaffhausen, Switzerland) consists of a CAD kernel, a comprehensive API, additional toolboxes, and ready-to-run user programs. The kernel includes a database, complete data management functionality, and the entire 2-D and 3-D visualization system. Parts of this functionality is available via about 200 APIs. Heron can store and manage up to several megabytes of graphical data. For higher amounts of data, ICAT recommends more powerful external ODBC-compatible databases. Heron can effectively display bit-mapped and vector drawings. For the shading of 3-D objects, the system uses the OpenGL library.
You can program Heron with APIs or with the higher-level toolbox functions. The Heron toolboxes provide a container for complex special-purpose functions, suc
h as views, mathematical transformations, and user dialog boxes.
Heron is best for developing graphics applications with a high degree of interactivity, such as design programs. Because of its four-layer architecture, novice and experienced graphics developers alike can benefit from using Heron. The system is available on Windows 95, Windows NT, the X Window System, and OS/2 and ships with all sources. The compa-ny also expects to develop an OLE Control (OCX) version of Heron during this year. ICAT charges a development license fee and royalties for commercial applications developed with Heron (run-time license).
Mapping Systems
Geographic information systems (GISes) and mapping systems require a lower degree of user interaction than CAD systems because they're used mainly to administrate, analyze, and display existing information, such as data in environmental or land-registry databases. In contrast to CAD applications, they don't require sophisticated 3-D functions. However,
the seamless integration of graphical (spatial) and nongraphical (administrative) databases in GISes is very important.
Sysdeco's (Oslo, Norway) Tellus Vision 2.0 tool set targets developers of GIS and mapping systems. It has a sophisticated SQL query tool, QBE Vision, and the dedicated GIS tool set Tellus (Latin for "the Earth"), which includes a comprehensive visualization kernel. QBE Vision consists of a so-called Form Designer, a database management and query system, a debugger, and a report generator. The Form Designer works as the interface builder. It supports a large range of GUI objects, such as status, progress, and toolbars, as well as sliders and push buttons.
If you have the right tool, developing graphics applications is no more difficult than programming any other type of application. As with all other development areas, object orientation is the preferred way to go. But as long as a standard object format for componentware is missing, the best alternative for graphics applications
are C++ class libraries.
WHERE TO FIND
Abaco
Mantova, Italy
Phone: +39 376 222181
Fax: +39 376 222182
ICAT
Schaffhausen, Switzerland
Phone: +41 53 255 655
Fax: +41 53 255 656
SOFA
Marburg, Germany
Phone: +49 6421 12061
Fax: +49 6421 12063
E-Mail:
100331.506@compuserve.com
Sysdeco
Oslo, Norway
Phone: +47 22 096500
Fax: +49 22 09 6501
HotBYTEs
- information on products covered or advertised in BYTE
screen_link (107 Kbytes)

DbCAD lets developers visualize and manage databases of vector and raster information.
screen_link (52 Kbytes)

The visualization functions of Condor 3.2 include object generation and grouping as well as mathematical transformations.
Bernhard Steppan is a freelance writer based in Frankfurt, Germany. You can reach him by sending E-mail to
editors@bix.com
.