The CALCOMP Graphics Library emulator

stop If you didn't come to this page specifically because you were already looking for a "CALCOMP" graphics library, turn back now.


This "CALCOMP" library calls the VOGLE graphics library. It is used to quickly resurrect old codes that called such libraries; or to aid in interfacing with utilities with CALCOMP library hooks in them.


Because I have had need to quickly resurrect codes that have CALCOMP calls in them it is handy for me to have a CALCOMP-compatible library and documentation around that does not need any maintenance support for years at a time.

So this library supports no output devices directly. Instead, it calls my variant of the VOGLE graphics library. It is bundled with it, and builds when it does. The scripts in the QA directory show examples of how to build and run user programs that use the libraries. For example, if you have set things up correctly, to build simple programs you will enter:

         ccall program.f

If you think you have a need similar to mine for this CALCOMP library note that many so-called "CALCOMP-compatible" libraries varied slightly from the standard (ie. the library supplied by CALCOMP). As graphics capabilities expanded the vendors often added routines to fill polygons with patterns; to provide clipping and viewporting options; to add color and line thickness control; to select hardware fonts and so on. Although the VOGLE library being called supports those features, this library emulates only the original CALCOMP library capabilities. That is, you may have to add a few routines if you need some of those additional features; or change your code to call VOGLE directly.

Alternate driver code is present (but not compiled by default by the build script) that does not use VOGLE, but instead writes a MegaTek/Liant TEMPLATE PDF file (without using TEMPLATE). PDF files were a proprietary metafile which was prepared for specific output devices using TEMPLATE routines that converted PDFs to any of the TEMPLATE output devices (which probably ran to well over a hundred formats). Therefore,much of the user guide still references TEMPLATE and TEMPLATE Pseudo Device Files (PDF) files (Note that these file have nothing to do with Adobe Acrobat PDF files). Unless you somehow still have a TEMPLATE license, this code is of historical interest only.


Basically, substitute the references to the TEMPLATE graphics library with references to the VOGLE graphics library and this old document is up to date. The basic calls are the same. The significant difference is that instead of the library writing a TEMPLATE PDF file, it will call a specific VOGLE driver of your choice at run time (ie. X11 Windows, Adobe PDF, PostScript, PCL5, ppm bitmaps, FrameMaker MIF files, ...).


This code is a good test of your Fortran compiler's ability to compile old FORTRAN 66 code. It contains original CALCOMP code snippets circa 1969 (which was provided with permission for modification). "If it ain't broke don't fix it" ...


"CALCOMP" graphics libraries were a de-facto standard graphics interface around the world when graphics was done mostly on pen-plotters; but there were many variants. Because of these differences, you may very well have to make simple routines of your own that call these routines. So, to avoid conflicts with your routines and other libraries all user-callable routines in this library have had the prefix C_ added to their name.

Other than that, this library is called in a way that is identical to the original CALCOMP library except for a few minor changes made originally to call the commercial graphics library "TEMPLATE" (instead of generating a file of CALCOMP plotter commands), as noted in the documentation.

Note that the most common point of divergence between "CALCOMP-compatible" libraries was whether a string was a packed integer array of various word sizes (ie. "Hollerith") or an array of characters or a character string.

QA/Example Programs:

Originally the CALCOMP library was a simple graphics library that created files composed of instructions that drove a very popular family of pen plotters made by CALCOMP. The library was supplied by the manufacturer. This made it easier for CALCOMP customers to create plots on these old vector-based monochrome (then color) pen plotters using Fortran 66 or 77 (which was the most popular programming language for graphics). For the most part, codes generated plots not by writing specific standardized metafiles such as PostScript or CGM or SVG or even pixmap files, but by calling the CALCOMP-supplied library.

Because of CALCOMP's initial dominance in the plotter market other vendors made plotters compatible with CALCOMP plotters, or supplied a library with similar routines that would drive their plotters.

The CALCOMP calls thus became a de-facto standard for quite some time.

The advent of efficient and affordable raster graphics and PostScript and 3-D graphics ultimately made this simple vector-based 2-D graphics library inadequate for many graphics applications and it's use faded.