GESCAPE
Sends device-specific information to a graphic device.
GESCAPE device-selector, code [,param(*)][;return(*)]
|
Usage:
|
GESCAPE Dev,Operation;Array(*)
GESCAPE 14,4
GESCAPE 2,3;Hardclip(*)
GESCAPE Plttr,Select,Send(*);Receive(*)
|
Description:
GESCAPE exchanges device-specific data with a graphic device. The code parameter determines what operation will be done. The param array sends information to the device. The return array receives information from the device. The type, size and shape of the arrays must be appropriate for the requested operation. Codes greater than 99 are extensions to HTBasic which are not present in HP BASIC. Codes in the range 30 to 41 apply to the Windows version only.
Code 1
Return the number of color map entries. The return array must be a one dimensional INTEGER array and have at least one element. The first element is assigned the number of color map entries.
Code 2
Return the color map values. The return array must be a two dimensional REAL array, must have at least one row, and must have three columns. The first row contains color information for pen 0, second row for pen 1, etc. If the array does not have enough rows or has too many rows, no error is reported. The first column contains the information for red, the second for green and the third for blue. The color information ranges in value from zero to one. Color values are multiples of 1/N, where N is the number of non-black shades available for each color.
Code 3
Return the hard-clip values. The values are returned in plotter units or pixels. The return array must be a one dimensional INTEGER array and must contain at least four elements. The first four elements of the array are assigned the values, X min, Y min, X max, Y max, respectively. For a CRT, the fifth and sixth elements give the INTEGER array dimensions needed by the GSTORE command to store the screen image. For example:
10 INTEGER A(1:6)
20 GESCAPE CRT,3;A(*)
30 ALLOCATE INTEGER B(1:A(5),1:A(6))
40 GSTORE B(*)
Code 4
Set normal drawing mode. Drawing in normal drawing mode with a positive pen number sets each pixel to the pen number. Drawing in normal mode with a negative pen number takes the value of each pixel and clears the bits associated with the pen value. On monochrome displays, the drawing mode is always normal so GESCAPE 4 and 5 are not supported.
Code 5
Set alternate drawing mode. Drawing in alternate mode with positive pen numbers performs an inclusive OR on the pen value and the color-map entry number at each pixel. Drawing in alternate mode with negative pen numbers, performs an exclusive OR on the pen value and the color-map entry number at each pixel. On monochrome displays, the drawing mode is always normal so GESCAPE 4 and 5 are not supported.
Code 6
Return the graphic display masks. The return array must be a one dimensional INTEGER array and must have at least one element. The first element is assigned the value of the graphics write-enable mask. The second element, if present, is assigned the value of the graphics display-enable mask. Each bit in the mask corresponds to one of the bit planes. Bit 0 corresponds to the first plane.
Code 7
Set the graphic display masks. The param array must be a one dimensional INTEGER array and must have at least one element. The first element is assigned to the graphics write-enable mask. The second element, if present, is assigned to the graphics display-enable mask. This code is not supported by HTBasic. Often, where operation code 7 is used, MERGE or SEPARATE ALPHA can be used instead.
Window Manipulation
Several GESCAPE codes allow manipulation of the HTBasic windows.
Code
|
Operation
|
30
|
Maximize the window
|
31
|
Hide the window
|
32
|
Restore the window
|
33
|
Set interior client of the app window position and size
|
34
|
Get interior client of the app window position and size
|
35
|
Bring the window to the top
|
36
|
Get the screen size
|
37
|
Returns the Title Bar enable flag
|
38
|
Hide / restore title bar
|
39
|
Set the DUMP size (% of paper width)
|
41
|
Minimize the window
|
The following GESCAPE CRT codes have been added for manipulation of the program window.
Code
|
Operation
|
46
|
Turn the Toolbar Off
|
47
|
Turn the Toolbar On
|
48
|
Turn the Status Bar Off
|
49
|
Turn the Status Bar On
|
50
|
Remove Main Menu
|
51
|
Restore Main Menu
|
52
|
Disable Borders on Parent Window
|
53
|
Enable Borders on Parent Window
|
54
|
Disable Minimize button on Parent Window
|
55
|
Enable Minimize button on Parent Window
|
56
|
Disable Maximize button on the Parent Window
|
57
|
Enable Maximize button on the Parent Window
|
58
|
Disable Close button on the Parent Window
|
59
|
Enable Close button on the Parent Window
|
60
|
Turn the Bookmark Toolbar Off
|
61
|
Turn the Bookmark Toolbar On
|
62
|
Turn the Debug Toolbar Off
|
63
|
Turn the Debug Toolbar On
|
64
|
Turn the filename in the titlebar On
|
65
|
Turn the filename in the titlebar Off
|
The following GESCAPE CRT codes have been added for manipulation of the program child window.
Code
|
Operation
|
130
|
Maximize the window
|
131
|
Hide the window
|
132
|
Restore the window
|
135
|
Bring the window to the top
|
137
|
Returns the Title bar enable flag
|
138
|
Hide / Restore the Title bar (Toggle switch)
|
141
|
Minimize the window
|
152
|
Disable Borders on Child Window
|
153
|
Enable Borders on Child Window
|
The following example shows the syntax for several of the GESCAPES. Note that codes that set information have a comma before the array name while codes that get information have a semicolon.
INTEGER Get4(1:4),Set4(1:4),Get2(1:2),Set1(1:1)
DATA 90,100,500,300 ! Position of upper left corner:
! 90,100), Width = 500, Height = 300
READ Set4(*)
GESCAPE CRT,30 ! Maximize the window
GESCAPE CRT,31 ! Hide the window
GESCAPE CRT,32 ! Restore the window
ESCAPE CRT,33,Set4(*) ! Set position and size: X,Y,W,H
GESCAPE CRT,34;Get4(*) ! Get position and size: X,Y,W,H
GESCAPE CRT,35 ! Bring the window to the top
GESCAPE CRT,36;Get2(*) ! Get the screen size: W,H
GESCAPE CRT,37;Get3(*) ! Get the title bar enable flag
PRINT Get(2) ! Print the Screen Size
PRINT Get(3) ! Print the title bar enable flag
Set1(1)=50 ! Set the DUMP size to 50%
GESCAPE CRT,38 ! Hide window Title Bar
GESCAPE CRT,38 ! Restore window Title Bar
Set (1)=50 ! Set the DUMP size to 50%
GESCAPE CRT,39,Set1(*) ! Set the DUMP size (default is 100%)
GESCAPE CRT,41 ! Minimize the window
GESCAPE CRT,32 ! Restore the window
END
Code 103
Returns the current PEN and AREA PEN assignments. The return array should be a one dimensional INTEGER array with two elements. The first element is assigned the current PEN assignment. The second element is assigned the current AREA PEN assignment. The following program demonstrates this capability:
10 INTEGER P(1)
20 GESCAPE CRT,103;P(*)
30 PRINT "The current PEN is";P(0)
40 PRINT "The current AREA PEN is";P(1)
50 END
Code 104
Sets device-specific information in the PLOTTER IS device. The param array must be a one dimensional INTEGER array. The number of elements required depends on the device driver. The first element is the operation number and the subsequent elements are the values associated with that operation.
For the HPGL plotter driver, code 104, operation 1 is used to enable HPGL/2 capabilities. When HPGL/2 is used, polygons are sent to the plotter for rendering. With many plotting devices, this allows the polygons to be filled. When generating an HPGL file for import into other programs, it is often more desirable for the polygon to import as a single unit, rather than a series of lines. To enable HPGL/2, use the following code. Substitute the ISC for the HPGL plotter in place of Isc in line 40.
10 INTEGER Param(1)
20 Param(0)=1 ! HPGL Operation Number: 1 = HPGL/2 Flag
30 Param(1)=1 ! Value: 1=enable, 0=disable
40 GESCAPE Isc,104,Param(*)
Code 105
Sets device-specific information in the GRAPHICS INPUT IS device. The param array must be a one dimensional INTEGER array. The number of elements required depends on the device driver. The first element is the operation number and the subsequent elements are the values associated with that operation.
Code 106
Sets device-specific information in the DUMP DEVICE IS device. The param array must be a one dimensional INTEGER array. The number of elements required depends on the device driver. The first element is the operation number and the subsequent elements are the values associated with that operation.
For the dump drivers, code 106, operation 1 is used to specify a portion of the screen to dump when DUMP GRAPHICS is executed. The syntax is:
GESCAPE PRT,106,param(*)
The param array must be a one dimensional INTEGER array of five elements. The first element is the operation number. The remaining elements specify the boundary for the DUMP. The boundary is specified in screen units:
param(1) - 1
param(2) - Beginning row
param(3) - Ending row
param(4) - Must be 0
param(5) - Must be 0
10 INTEGER A(1:5)
20 DUMP DEVICE IS PRT
30 CONFIGURE DUMP TO "HP-PCL"
40 A(1)=1 ! operation code, always 1
50 A(2)=100 ! begin row, screen units
60 A(3)=300 ! end row, screen units
70 A(4)=0 ! reserved, must be 0
80 A(5)=0 ! reserved, must be 0
90 GESCAPE PRT,106,A(*)
100 FRAME
110 MOVE 0,0
120 DRAW 100,100
130 DUMP GRAPHICS
140 END
See Also: