Home Print dialogs PRINT DIALOG - GET SETTING STRUCTURE SIZE (AES 204, 0) PRINT DIALOG - REMOVE PRIVATE PRINTERS (AES 205, 1)

2.6.8 PRINT DIALOG - ADD PRIVATE PRINTERS (AES 205, 0)

With ADD PRIVATE PRINTERS a program can add its own private printer descriptions to the dialog. <drv_info> contains a pointer to a list of available printers and dither processes. The driver number should be set to 0x7fff to differentiate the private driver from the OS-drivers.

Declaration:
WORD pdlg_add_printers( PRN_DIALOG *prn_dialog, DRV_INFO *drv_info );

Call:
ret = pdlg_add_printers( prn_dialog, &drv_info );

Variable         Argument            Meaning
Inputs:

contrl[0]        205                 pdlg_set
contrl[1]        1                   Entries in intin
contrl[3]        2                   Entries in addrin

intin[0]         0                   pdlg_add_driver

addrin[0]        prn_dialog          Pointer to management structure
addrin[1]        driver

Outputs:

contrl[2]        1                   Entries in intout
contrl[4]        0                   Entries in addrout

intout[0]        ret                 0: Error    1: All OK

Structure description:

typedef struct
{
   LONG        magic;               /* 'pdnf' */
   LONG        length;              /* Structure length */
   LONG        format;              /* Data format */
   LONG        reserved;            /* Reserved */

   WORD        driver_id;           /* Driver number for the VDI */
   WORD        driver_type;         /* Driver type */
   LONG        reserved1;
   LONG        reserved2;
   LONG        reserved3;

   PRN_ENTRY   *printers;           /* List of printers belonging to 
                                       the driver */
   DITHER_MODE *dither_modes;       /* List of dither processes 
                                       supported by the driver */
   LONG        reserved4;
   LONG        reserved5;

   LONG        reserved6;
   LONG        reserved7;
   LONG        reserved8;
   LONG        reserved9;

   BYTE        device[128];         /* Printer driver output file */

} DRV_INFO;

typedef struct _dither_mode
{
   struct _dither_mode  *next;
   LONG        length;              /* Structure length */
   LONG        format;              /* Data format */
   LONG        reserved;            /* Reserved */

   LONG        dither_id;           /* Dither ID */
   LONG        color_modes;         /* Colour depths supported */

   LONG        reserved1;
   LONG        reserved2;

   BYTE        name[32];            /* Name of the dither process */
} DITHER_MODE;

typedef struct _prn_entry           /* Device description */
{
   struct _prn_entry *next;         /* Pointer to next device description */
   LONG        length;              /* Structure length */
   LONG        format;              /* Data format */
   LONG        reserved;            /* Reserved */

   WORD        driver_id;           /* Driver ID */
   WORD        driver_type;         /* Driver type */
   LONG        printer_id;          /* Printer ID */
   LONG        printer_capabilities; /* Printer capabilities */
   LONG        reserved1;

   LONG        flags;
   struct _pdlg_sub  *sub_dialogs;  /* Pointer to the list of subdialogs 
                                       for this printer */
   PRN_SWITCH  setup_panel;         /* Initialise subdialog at printer 
                                       change */
   PRN_SWITCH  close_panel;         /* Close subdialog at printer change */

   PRN_MODE    *modes;              /* List of available resolutions */
   MEDIA_SIZE  *papers;             /* List of available paper formats */
   PRN_TRAY    *input_trays;        /* List of feed trays */
   PRN_TRAY    *output_trays;       /* List of output trays */

   BYTE        name[32];            /* Name of the printer */
} PRN_ENTRY;

/* old_printer can also be 0L */
typedef LONG  (cdecl *PRN_SWITCH)( struct _drv_entry *drivers, 
          struct _prn_settings *settings, struct _prn_entry *old_printer, 
          struct _prn_entry *new_printer );

#define  PRN_STD_SUBS   0x0001

typedef struct _prn_mode            /* Description of a print mode */
{
   struct _prn_mode *next;          /* Pointer to the next print mode */

   LONG        mode_id;             /* Mode ID (index within the file) */
   WORD        hdpi;                /* Horizontal resolution in dpi */
   WORD        vdpi;                /* Vertical resolution in dpi */
   LONG        mode_capabilities;   /* Mode capabilities */

   LONG        color_capabilities;  /* Colour capabilities */
   LONG        dither_flags;        /* Flags specifying whether the corres-
                                       ponding colour mode is accessible
                                       with or without dithering */
   MEDIA_TYPE  *paper_types;        /* Suitable paper types */
   LONG        reserved;

   BYTE        name[32];            /* Mode name */
} PRN_MODE;

typedef struct _media_type          /* Description of a paper type/print 
                                       medium */
{
   struct _media_type   *next;

   LONG        type_id;             /* Paper format type ID */
   BYTE        name[32];            /* Name of the paper format */
} MEDIA_TYPE;

typedef struct _media_size          /* Description of a paper format */
{
   struct _media_size   *next;

   LONG        size_id;             /* Paper format size ID */
   BYTE        name[32];            /* Name of the paper format */
} MEDIA_SIZE;

typedef struct _prn_tray            /* Description of a feed/output tray */
{
   struct _prn_tray  *next;

   LONG        tray_id;             /* Number of the feed or output tray */
   BYTE        name[32];            /* Name of the tray */
} PRN_TRAY;


Home Print dialogs PRINT DIALOG - GET SETTING STRUCTURE SIZE (AES 204, 0) PRINT DIALOG - REMOVE PRIVATE PRINTERS (AES 205, 1)