• Aucun résultat trouvé

Inter-Office Memorandum

N/A
N/A
Protected

Academic year: 2022

Partager "Inter-Office Memorandum "

Copied!
3
0
0

Texte intégral

(1)

Inter-Office Memorandum

To Mesa Users Date October 24, 1977

From R. 10hnsson Location Palo Alto

Subject Simple Display Package Organization SDD/SD

XEROX SDD ARCHIVES

XEROX

I have read and understood Pages _________ To ________ _

Filed on: [MAXC1 ]<Johnsson>SimpleDisplay.bravo

Reviewer _________ Date ______ _

:#

of Pages ____ Ref .. 11~1,)1>

This memo describes a simplified display package which may be of interest to some Mesa users. The package uses the DeB-per-line mode of operation in order to increase scroll speed and maximize the amount of text that can be displayed for a given amount of memory. There is no provision for other than Teletype style useage, i.e., there is no support for pointing. selecting. etc. This package can be used to replace the Display. Menus, Rectangles. and Windows modules in the standard Mesa system for applications which do not require the generality of those interfaces.

The modules described here may be used separately or may be used in the configuration SimpJeDisplay which includes a standard control module.

Fonts

FontDefs defines the interface to Font objects.

FontDefs: DEFINITIONS =

BEGIN

BitmapState: TYPE = RECORD [ origin: POINTER.

wordsPerLine, x, y: CARDINAL];

FontObject: TYPE = RECORD [

paintChar: PROCEDURE [FontHandle, CHARACTER, POINTER TO BitmapState], clearChar: PROCEDURE [FontHandle, CHARACTER, POINTER TO BitmapState], charWidth: PROCEDURE [FontHandle, CHARACTER] RETURNS [CARDINAL], charHeight: PROCEDURE [FontHandle, CHARACTER] RETURNS [CARDINAL], close: PROCEDURE [FontHandle],

destroy: PROCEDURE [FontHandle],

lock: PROCEDURE [FontHandle] RETURNS [POINTER], unlock: PROCEDURE [FontHandle]];

FontHandle: TYPE = POINTER TO FontObject;

CharWidth: PROCEDURE [font: FontHandle, char: CHARACTER] RETURNS [CARDINAl.];

CharHeight: PROCEDURE [font: FontHandle, char: CHARACTER] RETURNS [CARDINAL];

CreateFont: PROCEDURE [SegmentDefs.FileSegmentHandle] RETURNS [FontHandle];

(2)

Simple Display Package 2

END.

A FontObject contains the following operations:

paintChar: copies the specified character from the font to the bitmap position specified in the BitmapState; x is updated to point to the next character position.

clearChar: erases the rectangle containing the character (i.e. it does not just clear the bits of the character). The input state points just beyond the character and is modified to point to where the character used to be. paintChar[f, c, s] followed by clearChar[f, c, s] leaves s unchanged.

charWidth, charHeight: return the width and height of a character in bits and scan lines respectively.

close: swaps the font out of memory if it is not otherwise in use. The font will always be swapped in when needed, but may be swapped out at any time. It is not generally locked.

destroy: destroys the FontObject.

lock: locks the font in memory and returns a POINTER to the first word. This can be used to implement other operations on the bits in the font. Note that nothing in the FontObject dictates what font format is used.

unlock: undoes lock.

The module AIFont implements FontObjects for Al format fonts. Other modules for other font formats could be substituted easily. At this time no other modules have been written.

Display

The module SystemDisplay implements the following PROCEDURES from Stream Defs:

GetDefaultDisplayStream ClearCurrentLine

ClearDisplayChar

DisplayDefs defines some additional interface procedures:

DisplayDefs: DEFINITIONS =

BEGIN

Background: TYPE = {white, black};

SetSystemDisplaySize: PROCEDURE [nTextLines, nPages: CARDINAL];

SetDummyDisplaySize: PROCEDURE [nScanLines: CARDINAL];

InitDisplay: PROCEDURE [dummySize, textLines, nPages: CARDINAL, f: FontDefs.FontHandle];

DisplayOff: PROCEDURE [color: Background];

DisplayOn: PROCEDURE;

(3)

Simple Display Package 3

END.

The display consists of a dummy DCB for spacing followed by the display area itself.

InitDisplay specifies the size of the dummy in scan lines (72 per inch), the size of the text area in text lines, and the number of pages of memory to allocate for bitmap space. A small display of 4-6 text lines works well with about 6 pages of bitmap space; a full screen of about 50 lines of program text (lots of white space) can be handled with about 40 pages of bitmap.

Once the display is initialized the size of either the dummy or the text area can be changed (changing the size to zero works correctly). DisplayOff and DisplayOn provide a simple means of reclaiming all of the display space. In addition DisplayOff calls font.close[font]

to swap out the font if possible.

System Display also contains the following PUBLIC items which are not in the DisplayDefs interface (due to an oversight at the time the interface was frozen):

SetTypescript: PROCEDURE [StreamDefs.DiskHandle];

Set Font: PROCEDURE [FontDefs.FontHandle];

Call SetTypescript with a DiskHandle to enable the typescript facility; pass NIL to turn the typescript off. Call SetFont with a new FontHandle to change the font (use this procedure only when the display is off, i.e. size

=

0).

Control Module

A standard control module, DisplayControl, is also provided. It will take care of initializing the display, font and typescript using the same algorithm as the standard Mesa system (use MesaFont.al or SysFont.al and Mesa.Typescript). It will also reestablish the font and typescript correctly after a Makelmage and flush the typescript buffer during OutLd-Inld;

i.e. it does the things the standard Mesa system does. The configuration to make a stand alone display package is:

SimpleDisplay: CONFIGURATION

IMPORTS DirectoryDefs, ImageDefs, SegmentDefs, StreamDefs, StringDefs, SystemDefs

EXPORTS DisplayDefs, FontDefs

CONTROL DisplayControl

=

BEGIN

AIFont;

SystemDisplay;

DisplayControl;

END.

The source and object files for FontDefs, AIFont, DisplayDefs, SystemDisplay and SimpleDisplay are on the (MESA) directory.

Références

Documents relatifs

However, you may specify a particular module or definitions file by typing name$foo (more on this syntax later). It was decided to do a two pass interpreter;

Note that the staff size includes one full time person from CSL (Ed Satterthwaite somewhat less than full time, with Jim Mitchell making up the

Owing to the left-to-right and top-to-bottom nature of pages and owing to our efficient representation of pages which exploits this nature, the bit map

Note I: Successful transmission of the 20-bit word shall indicate that the horizontal sync has been properly received and decoded.. Proper retransmission will

(1) Pilot maps a big space to the entire log file and creates uniform I-page swap units; the debugger accesses this file through the standard virtual memory

The operation DElETE could be executed from any of the permanent frames (perhaps from outside the configuration?) and would do an UNNEW on each frame in the

Smokey also pointed out that the Tools Environmcnt currently does not support a selection schemc; however he felt it would not be terribly hard to implemcnt one

In simple cases it is not necessary to modify the target program (the program for which pariwise instruction data is gathered). The analysis program provides