Classes listed here and the protocol in the following section constitute
OpenStep's object-oriented interface to the Display PostScript System. As such,
many of the argument and return types that appear below (specifically, those
having a DPS prefix) are not described in this
document. Rather, they are detailed in the specification for the Display
PostScript System itself, as found in the Display PostScript System, Client
Library Reference Manual, by Adobe Systems Incorporated.

NSDPSContext

Inherits From: NSObject

Conforms To: NSObject (NSObject)

Declared In: DPSClient/NSDPSContext.h

Class Description

The NSDPSContext class is the programmatic interface to objects that represent
Display PostScript System contexts. A context can be thought of as a
destination to which PostScript code is sent for execution. Each Display
PostScript context contains its own complete PostScript environment including
its own local VM (PostScript Virtual Memory). Every context has its own set of
stacks, including an operand stack, graphics state stack, dictionary stack, and
execution stack. Every context also contains a FontDirectory which is
local to that context, plus a SharedFontDirectory that is shared across
all contexts. There are three built-in dictionaries in the dictionary stack.
From top to bottom, they are userdict, globaldict, and
systemdict. userdict is private to the context, while
globaldict and systemdict are shared by all contexts.
globaldict is a modifiable dictionary containing information common to
all contexts. systemdict is a read-only dictionary containing all the
PostScript operators.

At any time there is the notion of the current context. The current
context for the current thread may be set using setCurrentContext:.

NSDPSContext objects by default write their output to a specified
data destination. This is used for printing, FAXing, and for generation
of saved EPS (Encapsulated PostScript) code. The means to create contexts that
interact with displays are platform-specific.

The NSApplication object creates a context by default.

NSDPSContext Objects and Display PostScript System Context Records

When an NSDPSContext object is created, it creates and manages a
DPSContext record. Programmers familiar with the client side C function
interface to the Display PostScript System can access the DPSContext record by
sending a context message to an NSDPSContext object. You can then
operate on this context record using any of the functions or single operator
functions defined in the Display PostScript System client library. Conversely,
you can create an NSDPSContext object from a DPSContext record with the
DPSContextObject() function, as defined in Client Library
Functions. You can then work with the created NSDPSContext
object using any of the methods described here.

General Exception Conditions

A variety of exceptions can be raised from NSDPSContext. In most cases,
exceptions are raised because of errors returned from the Display PostScript
Server. Exceptions are listed under Types and
Constants. Also see the Display PostScript System, Client
Library Reference Manual, by Adobe Systems Incorporated, for more details
on Display PostScript System error names and their possible causes.

- (void)printFormat:(NSString *)format,... Constructs a string
from format and following string objects (in the manner of
printf()) and sends it to the context's destination.

- (void)printFormat:(NSString *)format Constructs a string from
format and argList (in the

arguments:(va_list)argList manner of vprintf()) and
sends it to the context's destination.

- (void)writeData:(NSData *)buf Sends the PostScript data in
buf to the context's destination.

- (void)writePostScriptWithLanguageEncodingConversion:(NSData
*)buf

Writes the PostScript data in buf to the context's destination.
The data, formatted as plain text, encoded tokens, or a binary object sequence,
is converted as necessary depending on the language encoding of the receiving
context.

Managing Binary Object Sequences

- (void)awaitReturnValues Waits for all return values from the result
table.

- (void)writeBOSArray:(const void *)data Write an array to the
context's destination as part of a

count:(unsigned int)items a binary object sequence. The array is
taken from data

ofType:(DPSDefinedType)type and consists of items items
of type type.

- (void)writeBOSNumString:(const void *)data Write a number
string to the context's destination as part of

length:(unsigned int)count a binary object sequence. The string
is taken from data

ofType:(DPSDefinedType)type as described by count,
type, and scale.

scale:(int)scale

- (void)writeBOSString:(const void *)data Write a string to the
context's destination as part of a

length:(unsigned int)bytes Write a binary object sequence to the
context's destination. The sequence consists of bytes (a count) of
data.

- (void)updateNameMap Updates the context's name map from the client
library's name map.

Managing Chained Contexts

- (void)chainChildContext:(NSDPSContext *)child Links
child (and all of it's children) to the receiver as its chained context,
a context that receives a copy of all PostScript code sent to the receiver.

- (void)unchainContext Unlinks the child context (and all of it's
children) from the receiver's list of chained contexts.

Debugging Aids

+ (BOOL)areAllContextsOutputTraced Returns YES if the data flowing
between the application's contexts and their destinations is copied to
diagnostic output.

+ (BOOL)areAllContextsSynchronized Returns YES if all NSPDSContext
objects invoke the wait method after sending each batch of output.

+ (void)setAllContextsOutputTraced:(BOOL)flag Causes the data
(PostScript code, return values, etc.) flowing between the all the
application's contexts and their destinations to be copied to diagnostic
output.

+ (void)setAllContextsSynchronized:(BOOL)flag Causes the
wait method to be invoked each time an NSDPSContext object sends a batch
of output to its destination.

- (BOOL)isOutputTraced Returns YES if the data flowing between the
application's single context and its destination is copied to diagnostic
output.

- (BOOL)isSynchronized Returns whether the wait method is invoked
each time the receiver sends a batch of output to the server.

- (void)setOutputTraced:(BOOL)flag Causes the data (PostScript
code, return values, etc.) flowing between the application's single context and
the Display PostScript server to be copied to diagnostic output.

- (void)setSynchronized:(BOOL)flag Sets whether the wait
method is invoked each time the receiver sends a batch of output to its
destination.