en:docs:fapi:viosetfont

This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS

Note: This is legacy API call. It is recommended to use 32-bit equivalent

2021/09/17 04:47 · prokushev · 0 Comments
2021/08/20 03:18 · prokushev · 0 Comments

VioSetFont

This call downloads a display font. The font being set must be compatible with the current mode.

Syntax

 VioSetFont (RequestBlock, VioHandle)

Parameters

  • RequestBlock (PVIOFONTINFO) - input: Address of the font structure containing the request.
  • VioHandle (HVIO) - input: Reserved word of 0s.

Return Code

rc (USHORT) - return:Return code descriptions are:

  • 0 NO_ERROR
  • 355 ERROR_VIO_MODE
  • 421 ERROR_VIO_INVALID_PARMS
  • 436 ERROR_VIO_INVALID_HANDLE
  • 438 ERROR_VIO_INVALID_LENGTH
  • 465 ERROR_VIO_DETACHED
  • 467 ERROR_VIO_FONT
  • 468 ERROR_VIO_USER_FONT
  • 494 ERROR_VIO_EXTENDED_SG

Remarks

VioSetFont is applicable only for the enhanced graphics adapter, VGA or IBM Personal System/2 Display Adapter.

Note: Although graphics mode support is provided in VioSetFont, this support is not provided by the Base Video Handlers provided with OS/2.

When VioSetFont is issued, the current code page is reset. If VioGetCp is subsequently issued, the error code ERROR_VIO_USER_FONT is returned. Return code, ERROR_VIO_USER_FONT represents a warning. It indicates that although the font could not be loaded into the adapter using the current mode, the font was saved as part of a special user font code page for use with a later VioSetMode. Successfully setting a user font sets the special user font code page, just as if a code page of -1 was specified using VioSetCp.

The user font code page consists of the most recent user font of each size that was set by VioSetFont. For example, if two 8×12 fonts and three 8×16 fonts had been set, only two fonts, the most recent of the 8×12 and 8×16 fonts, would be saved.

The special code page is used in the same way as those code pages specified on the CODEPAGE = statement in CONFIG.SYS.

Bindings

C

typedef struct _VIOFONTINFO{ /* viofi */
  USHORT  cb;                /* length of this structure */
  USHORT  type;              /* request type */
  USHORT  cxCell;            /* pel columns in character cell */
  USHORT  cyCell;            /* pel rows in character cell */
  PVOID   pbData;            /* requested font table (returned) */
  USHORT  cbData;            /* length of caller supplied data area (in bytes) */
} VIOFONTINFO;
 
#define INCL_VIO
 
USHORT  rc = VioSetFont(RequestBlock, VioHandle);
 
PVIOFONTINFO     RequestBlock;  /* Request block */
HVIO             VioHandle;     /* Video handle */
 
USHORT           rc;            /* return code */

MASM

VIOFONTINFO struc
  viofi_cb      dw  ? ;length of this structure
  viofi_type    dw  ? ;request type
  viofi_cxCell  dw  ? ;pel columns in character cell
  viofi_cyCell  dw  ? ;pel rows in character cell
  viofi_pbData  dd  ? ;requested font table (returned)
  viofi_cbData  dw  ? ;length of caller supplied data area (in bytes)
VIOFONTINFO ends
 
EXTRN VioSetFont:FAR
INCL_VIO            EQU 1
 
PUSH@  OTHER   RequestBlock  ;Request block
PUSH   WORD    VioHandle     ;Video handle
CALL   VioSetFont
 
Returns WORD