PF-Create-Panel-With-Shadow (Value 19)

Creates a panel with a shadow effect.

Parameters:

The panel's window is created disabled; that is, it is not visible.

PPB-Fill-Attribute pic x.
PPB-Fill-Character pic x.
PPB-First-Visible-Col pic 9(4) comp-x.
PPB-First-Visible-Row pic 9(4) comp-x.
PPB-Panel-Height pic 9(4) comp-x.
PPB-Panel-ID pic 9(4) comp
PPB-Panel-Start-Column pic 9(4) comp-x.
PPB-Panel-Start-Row pic 9(4) comp-x.
PPB-Panel-Width pic 9(4) comp-x.
PPB-Update-Mask pic x.
PPB-Visible-Height pic 9(4) comp-x.
PPB-Visible-Width pic 9(4) comp-x.

On Entry:

PPB-Fill-Attribute The attribute to be used for the shadow.
PPB-Fill-Character The character to be used as the shadow.
PPB-First-Visible-Col Positions the window horizontally within the panel. A value of 0 indicates that the left-hand edge of the window is positioned on the left-hand edge of the panel.
PPB-First-Visible-Row Positions the window vertically within the panel. A value of 0 indicates that the top of the window is positioned on the top edge of the panel.
PPB-Panel-Height The number of rows of text in the panel to be created.
PPB-Panel-Start-Column Positions the panel horizontally on the screen. A value of 0 indicates that the left-hand edge of the panel is positioned on the left-hand edge of the screen.
PPB-Panel-Start-Row Positions the panel vertically on the screen. A value of 0 indicates that the top of the panel is positioned on the top edge of the screen.
PPB-Panel-Width The number of columns of text in the panel to be created.
PPB-Update-Mask The width of the shadow to be used. Zero indicates a width of one character, otherwise the shadow is two characters wide.
PPB-Visible-Height The number of rows of text in the visible window.
PPB-Visible-Width The number of columns of text in the visible window.

On Exit:

PPB-Panel-ID The identifying handle of the created panel. You should copy this value into a data item in the Working-Storage Section of your program and specify it when using any functions that act on this panel.

Comments:

Panels allocates an area of memory for the new panel based on its size. The number of bytes of memory used by a shadowed panel is determined as follows:

4 * PPB-Panel-Height * PPB-Panel-Width

The size of the new panel can be larger than the screen, but you must observe the following:

  • PPB-Panel-Width must not be greater than 2000.
  • PPB-Panel-Height * PPB-Panel-Width must not be greater than 65535.

Failure to observe either of these limits results in Panels error code 6 being returned.

Once you create a panel with a shadow, you can change any of its variables except its width, height, and shadow details. You do this using PF-Shift-Panel. The newly created panel is filled with the current backdrop character and attribute. The shadowing effect on a shadowed panel is not transparent.

Example:

This example creates a panel that is 25 characters wide by 8 lines high. This panel starts on line 1, column 1 of the screen. The window into this panel starts on the first line and first column of the panel. This window is 25 characters wide by 6 rows deep.

The shadowing on the panel is one character wide, and is seen as a gray band.

* Panel size is 20 characters wide by 15 lines
       move 25 to ppb-panel-width.
       move  8 to ppb-panel-height.
* The window starts on screen line 1, col 1. Remember that
* PPB-Panel-Start-Column and PPB-Panel-Start-Row specify a
* screen position, where 0,0 is the top left corner of the
* screen.
       move 0 to ppb-panel-start-row.
       move 0 to ppb-panel-start-column.
* The window into the panel is 20 char wide by 10 lines.
       move 25 to ppb-visible-width.
       move  6 to ppb-visible-height.
* The window starts on the first line and column of the panel
* Remember that 0,0 is the top left corner of the panel.
       move 0 to ppb-first-visible-row.
       move 0 to ppb-first-visible-col.
* Specify the shadowing for the panel
       move 0 to ppb-update-mask
       move space to ppb-fill-character
       move gray  to ppb-fill-attribute
* Create the panel. It is initially disabled (invisible).
       move pf-create-panel to ppb-function.
       call "PANELS" using panels-parameter-block.
       if ppb-status not = zero
*         (code to abort)
            ...
* Save the panel identifier.
       move ppb-panel-id to ws-save-panel-id.