Copyright: Copyright © 1992-1998 Roger Willcocks
Citation: Copyright © 1992-1998 Roger Willcocks


contents
RoPS Help

opening a document
closing an open document
moving around within a document
moving around within a page
zooming and rotating the page
copying a page to the clipboard or a file
printing a page or pages
troubleshooting
common questions + answers
configuration and other advanced options
compatibility
about the author

Remember !  RoPS is not free.  See ordering information for further details. For additional help and answers to frequently asked questions check the RoPS web page at www.centprod.demon.co.uk/faq.htm


Opening a document

To open a document select the 'open' option from the 'files' menu. If the document is structured an index will be built.


Closing an open document

To close an open document select the 'close' option from the 'files' menu. The document can be closed at any time – even while it is being loaded.


Moving about within a document

Use the 'page' menu or the forward and back buttons on the toolbar to move about within a document.  If the document is structured any page can be accessed directly. However if the document is unstructured, or you have chosen not to build an index, the pages can only be read in order. RoPS simulates random access in an unstructured document by skipping forwards from the beginning of the document.


Moving about within a page

Use the left mouse button to 'drag' the page around within the window, or use the scroll bars at the side and bottom of the window.


Zooming and Rotating a document

To zoom or rotate a document, use the 'view' menu or the buttons on the toolbar.


colour options
Color options

Palette color mode uses eight times as much memory as monochrome for a given page size, as does Process color mode. Full color uses 32 times as much memory as monochrome.

If the soft–edged text option is selected black text will be rendered at twice normal size and averaged onto the screen. Other colors remain ragged.

Note that by default printouts are rendered in monochrome. To enable color printing uncheck the ‘monochrome printing’ option in the file/page setup panel.


Structured documents

A structured document contains numbered pages and an index that describes where each page starts within the document's computer file. RoPS can use the index to access any page of the document at random.

You can disable the building of an index by unchecking the ‘build index’ option. This can be useful for displaying a document which is badly or incorrectly structured.

RoPS simulates random access to an unstructured or unindexed document by skipping forward from the current point or – if reverse motion is required – rewinding to the beginning of the document and skipping forward from there.


'undefined' error

The 'undefined' error occurs if a function required by the PostScript document is not available.  This may be because the document uses a language extension that is not defined in Level 1 PostScript (the language implemented by RoPS), or it may be due to a syntax error in the PostScript file.


'limitcheck' error

The 'limitcheck' error occurs if a PostScript job requires more resources (path elements, half–tone dots etc.) than have been allocated by the interpreter. The resource that needs increasing can be inferred from the PostScript command that was active when the error occurred. For instance, the message ‘error: limitcheck; command:stroke’ is usually caused by exceeding the path element limit.

You can change the allocation of resources in the edit/settings/memory limits panel. Note that the changes will not come into effect until the program has been restarted.

Beware ! If you set the resources too low, RoPS may not be able to initialize properly. This normally results in an error being reported in the startup file. You can either reinstall the program or reset the settings by hand using the registry editor.


'undefinedfilename' error

The 'undefinedfilename' error occurs if the PostScript document includes another file and that file can't be found.


'dictfull' error
'dictfull error'

The 'dictfull' error occurs if an attempt is made to add an entry to a full dictionary. All the 'system' dictionaries, including the font dictionary, are created in ropsboot._ps. If a dictfull error occurs on a system dictionary you can increase its size by editing that file.


'VMerror' error

The 'VMerror' error occurs if the PostScript document uses too much virtual memory. RoPS allocates a fixed amount of virtual memory at startup.

The allocation of resources is specified in the edit/settings/memory limits panel. Beware ! If you set the resources too low, RoPS may not be able to initialize properly and it will be necessary to reset settings by hand.

Note: the frame buffer is NOT allocated out of virtual memory. If RoPS fails to create a frame buffer this is because there is not enough real memory (including swap space) available.


Copying a page to the clipboard or a file

The 'copy' option on the 'edit' menu copies the currently selected region, as an image, to the clipboard. The 'copy to' option copies it to a file.

The 'copy text' option extracts the textual information from the currently selected region and copies it to the clipboard.

To select a region point at one corner and press the right mouse button; then – still holding down the button – drag the mouse to the opposite corner and release the button.

To enlarge a previously selected region, hold down the 'shift' key while you press the right button.

To select the entire page use the 'select all' option on the 'edit' menu.


Printing a page or pages

The file/print option allows you to print the currently viewed page, all the pages, or a range of pages.  The image will always be centered on the paper and aligned so that its long edge is aligned to the long edge of the paper.

RoPS redraws the relevant pages at a resolution and scale governed by settings in the file/print setup panel. This includes an option for ‘odd/even only’ printing where every second page is skipped during the print operation — use this for double–sided printing.

If you have a color printer and you require color output, you should untick the ‘monochrome printing’ option in the file/page setup panel. In process-color mode, the ‘monochrome printing’ option selects whether to print separations or a composite page. In other modes it changes the page device to monochrome for the duration of the print job.


Registry Entries

These parameters are contained in the registry under the HKLM\Software\Centipede\RoPS key. You should never need to edit these settings by hand !

[rops]
vmsize – virtual memory size, in kilobytes
pathsize – number of elements in path
tokensize – maximum length of a token
cachesize – number of bytes in font cache
imbuffsize – number of pixels in image operator buffer
screensize – number of pixels in halftone screen
bootfile – full path to boot file – default: a:/ropsboot.ps
helpfile – full path to help file – default: a:/rops.hlp
jobname – full path of last job executed
filter – which file–open filter to use (ps = 0, eps = 1, all = 2)
colour – monochrome (0) or color (1) operation
antialias – ragged (0) or smoothed (1) operation
nohatch – normal (0) or alternative (1) color scheme
structure – ignore (0) or obey (1) document structure convention (build index)
fontrebuild – force font rebuild at startup (0) or (1)
contone – continuous (1) or halftone (0) color screening

[framebuffer]
sizex – width of frame buffer in points – default – 595
sizey – depth of frame buffer in mm – default – 842
resolution – lines per inch – default: 100
orientation – 90 degree rotates clockwise – default: 0

[halftone]
freq_C – Cyan halftone dots per inch – default: 20
angle_C – halftone screen angle in degrees – default: 15
freq_M – Magenta halftone dots per inch – default: 20
angle_M – halftone screen angle in degrees – default: 75
freq_Y – Yellow halftone dots per inch – default: 20
angle_Y – halftone screen angle in degrees – default: 0
freq_K – Black halftone dots per inch – default: 20
angle_K – halftone screen angle in degrees – default: 45

[printprops]
useprintres – stretch to fit (0) – use printer resolution – (1) or forced (2)
resolution – forced LPI if not using printer resolution – default: 300
scaling – percentage – default: 100
xoff – print offset x in pixels – default: 0
yoff – print offset y in pixels – default: 0
duplex – skip a page each page – (0) or (1)
forcemono – force 1-bit/pixel even if color printer – (0) or (1)


Configuration and other advanced options

color options
adding extra fonts
registry entries
printer options


TrueType Fonts

RoPS draws characters by using Windows TrueType fonts. However, many PostScript documents contain fonts with names that are different to those of the TrueType ones. If a font is not available, RoPS uses the Courier font instead. RoPS requires that the Courier font be available.

Public domain equivalents to the ‘standard 35’ fonts in TrueType format can be downloaded from the web — search for std35ttf.zip

TrueType fonts can be used in place of PostScript fonts by adding entries to the  HKLM\Software\Centipede\Rops\substitute registry key. Add entries of the form <installed font’s PostScript name>=<missing font’s PostScript name>. The PostScript name of an installed TrueType font can be gleaned from the ..\fontlist key. more details


font mapping details
Font Mapping (details)

The HKLM\Software\Centipede\Rops\fontlist registry key lists all the fonts that are installed on the system. Normally the list is created the first time the program is started, but if necessary you can force a rebuild at any time by enabling the ‘scan fonts at startup’ option (on the options menu.) RoPS will also rebuild the font list if the number of font families has changed since the last time the program was started.

Fontlist entries map the PostScript names of installed fonts to their TrueType names. For instance, the Microsoft TrueType font Times New Roman Regular has a PostScript name of TimesNewRomanPSMT so the fontlist key contains an entry saying:

TimesNewRomanPSMT=Times New Roman Regular

The ..\substitute registry key lists PostScript font name equivalents. RoPS uses the information under this key to create a list of font aliases. If an entry exists for (the PostScript name of) an installed font, the substitute name is mapped to the installed font’s TrueType name (hence the same TrueType font is used for both PostScript names.) The alias information is generated in the ..\fontalias key when the fonts are scanned at startup.

Substitute entries usually map vendors’ names for PostScript fonts to their canonical font name. For instance TimesNewRomanPSMT is Microsoft’s name for the standard PostScript font Times-Roman so the substitute key contains an entry saying:

TimesNewRomanPSMT=Times-Roman

In this example RoPS would notice that TimesNewRomanPSMT is available on the system (as the TrueType font Time New Roman Regular) and construct an alias under the fontalias key:

Times-Roman=Times New Roman Regular

If you want to substitute an installed TrueType font for a missing PostScript one, always do this by editing the [substitute] section. Don’t edit the [fontlist] or [fontalias] tables – anything you change in them will be overwritten the next time the fonts are scanned.


Troubleshooting

PostScript is an interpreted computer language with built–in error handling. Many documents / programs contain their own error–handling routines and RoPS will use these wherever possible. The default RoPS error handler generates a dialog box containing the name of the error and the name of the PostScript operator that generated it. Error handlers loaded from documents may attempt to print additional information onto the page itself.

There are 22 different PostScript errors.  They can be caused by four sorts of problem: syntax errors in the PostScript program itself; insufficient memory in the interpreter; missing files or language elements in the interpreter environment; or attempts to bypass security features of the language.

In addition RoPS contains a number of internal consistency checks. If a check is violated, a fatal error occurs and RoPS will exit immediately.

RoPS attempts to parse structured documents and build a page index. According to convention, in a structured document each page should be independent of all the others. However some documents break the rules; this can result in pages not appearing at all, appearing on top of each other, or various PostScript errors. Viewing the document with 'build index' turned off can sometimes help in this situation. This forces RoPS to display the document 'as is', without further interpretation.


common questions
Common questions + answers

•	What is RoPS ?
The RoPS interpreter is an Microsoft Windows implementation of the level 1 PostScript programming language interpreter described in Adobe Systems' book, the 'PostScript language reference manual'. RoPS is not an Adobe approved product. The name 'PostScript' is a registered trademark of Adobe Systems Incorporated.

•	How do you pronounce RoPS ?
With a soft 'o' – like the first syllable of 'opposite' – ropps. The word RoPS is an acronym for 'Roger's PostScript.'

•	Who wrote RoPS ?
RoPS was written by Roger Willcocks (rogerw@centipede.co.uk)

•	Where can I get fonts ?
Public domain equivalents to the ‘standard 35’ fonts in TrueType format can be downloaded from the web — search for std35ttf.zip.


Compatibility

RoPS is a full implementation of Level 1 PostScript, with the following limitations:

     Documents with more than 1000 pages are truncated to 1000 pages
     The 'stroke' boolean argument to 'charpath' is assumed to be false

RoPS has the following language extensions:

getenv: read an environment variable
     [string | name] getenv false     (not found)
     [string | name] getenv string true     (found)

getprofile: reads the entries under a registry key:
     [string | name] getprofile false     (not found)
     [string | name] getprofile dict true     (found)

dumprect: dump the framebuffer to a DIB file
     int int int int string dumprect –
     (left top right bottom filename); Coordinates are specified at 72 dpi


About the author

Roger Willcocks (rogerw@centipede.co.uk) is a consultant programmer specializing in graphics and low–level system programming. He wrote RoPS as a programming exercise; initially on a Unix system to become familiar with the PostScript language and later on a PC platform to understand the finer points of MFC and Windows. He would be very happy to receive comments and suggestions about the program.

See also www.centprod.demon.co.uk/faq.htm


Fatal errors

RoPS contains a number of internal consistency checks, known as 'assertions'. If an assertion fails a fatal error is generated. Please inform the author if you encounter an assertion error.

The fatal errors 'stop: no stop context' and 'error raised during error processing' generally indicate a syntax or other error in the ropsboot._ps startup file.


PostScript errors

The limitcheck and VMerror errors occur if a document needs more resources than have been allocated by the interpreter. The undefined and undefinedfilename errors occur if a file or language element is missing from the program's environment.

The following errors are usually caused by syntax errors in the PostScript program / document. For Further information refer to a PostScript language manual.

dictfull
dictstackoverflow
dictstackunderflow
execstackoverflow
invalidfont
invalidrestore
nocurrentpoint
rangecheck
stackoverflow
stackunderflow
syntaxerror
typecheck
undefinedresult
unmatchedmark

The following errors occur if a PostScript document attempts to bypass security features of the language.

invalidaccess
invalidexit
invalidfileaccess

Finally, 'ioerror' occurs if a file cannot be written / read.


Ordering Information

RoPS is not free ! RoPS is distributed as shareware to allow you to try the software before you purchase a license. Remember if you use RoPS beyond the 21–day evaluation period you must purchase a license as described below.

A RoPS single user license costs £30 or $45. You can purchase licenses over the Internet via Centipede Productions’ web pages at www.centprod.demon.co.uk/rops.htm.

Should you have any questions concerning this version of RoPS or if you want to contact Centipede Productions for any reason, please write to Centipede Productions, 100 Hazellville Road, London N19 3NA, England, telephone +44 (0) 171 263 3721, or email rops@centipede.co.uk

Roger Willcocks and Claire Neesham trading as Centipede Productions