About This Guide

Impressario is a printing and scanning environment for Silicon Graphics® IRIS® workstations. The Developer's Kit, included with Impressario, provides solutions for a wide range of UNIX® audiences: printer driver and scanner driver developers, application program developers, and end users.

The goal of Impressario is to provide an intuitive, friendly, and reliable interface for end users, while increasing system capability and performance for driver and application developers. Users can simply drag and drop a file onto a printer icon to print the file. Other graphical tools in the end user's environment provide information on the capabilities and status of any accessible printer or scanner.

The Impressario printing environment provides two main end-user enhancements:

Impressario enables developers of printer drivers and scanner drivers to showcase each product's special features and capabilities and present them to the user via a graphical dialog box. Application programmers can greatly reduce the development time required to support printing and scanning functions.

The manual applies to all releases of Impressario 2. Please review the release notes for all releases of Impressario.


Tip: The Impressario release notes contain the most recent information about the product. They are provided online and can be read using relnotes or grelnotes. In addition, the directory /usr/impressario contains information of interest to both application developers and end users.

The Impressario printing environment is built on top of the AT&T System V®, Release 3 (SVR3) printer spooling interface. Model files, filters, and printer drivers are provided to convert a wide variety of file types (ISO text files, Silicon Graphics image files, PostScript files, and so forth) to formats for both raster printers and PostScript printers. Using the Impressario host-based PostScript interpreter, it is possible to print PostScript documents to raster printers with performance that greatly surpasses printer-based PostScript interpreters. Impressario also includes the PrintBox Motif widget, a graphical user interface (GUI) for printing.

Impressario server software contains filters and drivers for sending jobs from a host workstation to a printer. In addition, all Impressario printer drivers maintain status information in a globally available printer object database (POD).

The Impressario scanning environment provides generic scanner support. Impressario scanner application programs and Impressario scanner drivers run as separate executables, enabling any scanning application to interact with all scanner drivers.

Impressario gives application developers a number of valuable resources, including

Audience

The Impressario Programming Guide is written for the following users:

  • printer driver developers

  • scanner driver developers

  • application program developers who need to print or scan from their applications

New Features

The 2.n release of Impressario contains these new features:

An Adobe Level II Configurable PostScript Interpreter (CPSI) 


The CPSI supports banded devices, such as inkjet plotters and inkjet printers, reducing the amount of host memory needed to use them.

A Generic Color PostScript driver 


This driver converts files to be printed into PostScript, which it sends to printers with PostScript interpreters, including selected color printers.

A new filter, text2ps, that converts ASCII text to PostScript 


All Impressario drivers now use text2ps to convert ASCII text files.

The Developer's Kit 


It is bundled with Impressario and is no longer a separate option.

Impressario 2.0 also adds support for the following:

  • Hewlett-Packard DesignJet® 750C plotters

  • Hewlett-Packard DeskJet® 660C, 850C, 855C, and 1600C color inkjet printers

  • Hewlett-Packard LaserJet® 4V, 4 Plus, 4Si, 5L, 5P, and 5Si printers

  • Hewlett-Packard JetDirect network adaptors for various printers

  • Lexmark Optra® R, Rx, L, Lx, and Lxi monochrome laser printers

  • Epson Color Stylus, Stylus Pro, and Stylus Pro XL printers

  • International Color Consortium (ICC) color profiles for the color management of image files, such as GIF and TIFF


Note: The release notes list all supported printers and scanners, and have details about the JetDirect network adaptors. Additional drivers will be added for releases following Impressario 2.0 (i.e. 2.1, 2.2, and so on).


How to Use This Guide

Since this guide has four separate audiences, the list provided below gives the areas of most interest to each user:

  • Printer driver developers should read chapters 1–6, 10, 11, and 12.

  • Printer application program developers should read chapters 1, 6, and 12.

  • Scanner driver developers should read chapters 1, 2, 7–9, 11, and 12.

  • Scanner application program developers should read chapters 1, 2, 9, and 12.

Conventions Used in This Guide

The followings conventions are intended to help make information easy to access and understand:

italic 

Used for arguments in a command line that you replace with a valid value. In text it indicates an argument, button, command, document title, file name, glossary item, new term, or variable. For example:

Use the phandler command to....

The NAME variable identifies the printer name.

ALL CAPS 

Used for defined constants in text. For example:

The SC_PROGFEED bit should be set.

bold 

Denotes command-line options, keywords, and functions. For example:

The -o option directs output.

SCErrorString() returns a text string.

Courier 

Used for code examples and screen displays. For instance, the following is a code example:

int
AdvanceFeeder(SCANINFO *scan)
{
    drverr = SCENOFEEDER;
    return -1;
}

Courier bold 

Used for user input. For example:

vstiff /usr/tmp/sample.blastfile<Enter>

< > 

Used to enclose arguments, parameters, and nonprinting keys (see above).

[ ] 

Enclose optional command arguments. Do not enter the brackets. Example:

[optional_entry]

Document Overview

Chapter 1, “Impressario Architecture,” discusses the Impressario printing and scanning architectures and defines Impressario compliance for printer driver and scanner driver developers.

Chapter 2, “Printer Drivers,” provides an overview of printer driver processing, plus a detailed analysis and discussion of an example printer driver. The required printer filter/driver options are also covered.

Chapter 3, “Printer Model Files,” discusses the printer model files and describes the modifications to be made by printer driver developers to the printer model file template.

Chapter 4, “Printer Graphical Options Panel,” discusses the graphical options panel that visually showcases a printer's features. The major topics discussed are options handling, panel layout, development, naming, installation, invocation, and termination.

Chapter 5, “Printing Libraries,” describes the libraries used by printer drivers, filters, and applications. The libraries described are the libspool library, the libprintui library, and the libpod library.

Chapter 6, “Scanner Drivers,” explains how to write a scanner driver. It provides a detailed analysis of the template scanner driver. The major topics are the driver template, header files, data structures, functions, installation, and testing.

Chapter 7, “Scanner-Specific Options,” discusses how to implement scanner-specific options for a scanner driver. The major topics are the options program, perspectives, and installation and testing.

Chapter 8, “Generic Scanner Interface,” describes a generic interface between a scanner driver and an application program. The major topics are the coordinate system for scanning, data structures, and data type conventions.

Chapter 9, “Testing for Impressario Compatibility,” explains how to use the programs that test printing compatibility with the Impressario environment. It explains how to test Impressario printing compatibility, an Impressario printer, and an Impressario printer software installation.

Chapter 10, “Packaging Your Impressario Product,” explains how to package the Impressario software product that you have created.

Chapter 11, “Enhancing Impressario With Plug-Ins,” explains how to add new features to the Impressario open architecture. The major topics are how the Impressario file conversion pipeline works, how to add a new file type to Impressario, and how to use an alternate PostScript RIP.

Appendix A, “Stream TIFF Data Format,” describes the Stream TIFF file format, the primary interchange file format between printer filters and drivers; and libstiff, a C application program interface (API) used to read and write Stream TIFF files. Stream TIFF is also used by gscan to store images in TIFF files and to scan to the screen (in conjunction with vstiff).

Appendix B, “Silicon Graphics Image File Format API,” describes libimp, the C-language API for reading and writing Silicon Graphics Image format files. The image processing features of libimp are also described.

Appendix C, “Printer Object Database (POD) File Formats,” defines the file formats for printer configuration, status, and log files in the POD. The major topics are general syntax, input parsing rules for libpod files, printer configuration file format, and printer status file format.

Appendix D, “Transition Notes,” explains how to migrate from Impressario 1.2 software to Impressario 2.n. It also explains how Impressario application developers and filter/driver developers can take advantage of the new features in Impressario 2.n.

Appendix E, “Scanner Driver Architecture,” describes the architecture of a scanner driver and discusses the template scanner driver, required and optional functions, and queues and multi-threaded scanner drivers.

Appendix F, “Reference Pages,” lists all Impressario online reference pages: general interest, printer developers, and scanner developers.

Appendix G, “Color Management in Impressario,” discusses using ICC color profiles and PostScript Color Rendering Dictionaries to promote color consistency among devices such as monitors, scanners, and printers.

Appendix H, “Using the Adobe Configurable PostScript Interpreter,” discusses legal restrictions on developers who use software licensed by Silicon Graphics from Adobe Systems.

Appendix I, “Impressario PPD Driver Implementation,” documents the Impressario PPD driver available with Impressario 2.2 (and higher).

Related Publications

Online Books

The following books, available online through Silicon Graphics, contain information related to Impressario:

  • Programming on Silicon Graphics Systems: An Overview, Silicon Graphics, Inc.

  • Indigo Magic Desktop Integration Guide, Silicon Graphics, Inc.

  • IRIX Device Driver Programming Guide, Silicon Graphics, Inc.

  • IRIX Device Driver Reference Pages, Silicon Graphics, Inc.

  • IRIX Admin: Peripheral Devices, Silicon Graphics, Inc.

  • Volume One: Xlib Programming Manual, O'Reilly & Associates

  • Volume Four: X Toolkit Intrinsics Programming Manual, O'Reilly & Associates

  • OSF/Motif Programmer's Guide, Prentice-Hall, Inc.

  • OSF/Motif Programmer's Reference, Prentice-Hall, Inc.

  • OSF/Motif Style Guide, Prentice-Hall, Inc.

  • Impressario User's Guide, Silicon Graphics, Inc.

Online Release Notes

After installing online documentation, you can view the Impressario release notes. If you have a graphics system, select “Release Notes” from the Help Toolchest to display the grelnotes graphical browser. Refer to the grelnotes(1) reference page for information on options to this command. If you do not have a graphics system, you can use the relnotes command. Refer to the relnotes(1) reference page for accessing the online release notes.

Adding the product name to the relnotes command displays the table of contents for that product's release notes. For example:

% relnotes Impressario
  The chapters for the “Impressario” product's release notes are:

  chap title
  1 Introduction
  2 Installation Information
  3 Changes and Additions
  4 Bug Fixes
  5 Known Problems and Workarounds
  6 Documentation Errors

  Use “/usr/sbin/relnotes productname chapter” to view a chapter

Online Reference Pages

Appendix F lists the reference pages provided online with Impressario. To access them, enter:

man page-nam