home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 1.2 / amidev_cd_12.iso / reference_library / devices / dev_examples / epsonx_density.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-20  |  1.2 KB  |  40 lines

  1. /*
  2.         Density module for EpsonX driver.
  3. */
  4.  
  5. #include <exec/types.h>
  6. #include "devices/printer.h"
  7. #include "devices/prtbase.h"
  8.  
  9. SetDensity(density_code)
  10. ULONG density_code;
  11. {
  12.         extern struct PrinterData *PD;
  13.         extern struct PrinterExtendedData *PED;
  14.  
  15.         /* SPECIAL_DENSITY     0    1    2    3    4    5    6    7 */
  16.         static int XDPI[8] = {120, 120, 120, 240, 120, 240, 240, 240};
  17.         static int YDPI[8] = {72, 72, 144, 72, 216, 144, 216, 216};
  18.         static char codes[8] = {'L', 'L', 'L', 'Z', 'L', 'Z', 'Z', 'Z'};
  19.  
  20.         PED->ped_MaxColumns =
  21.                 PD->pd_Preferences.PaperSize == W_TRACTOR ? 136 : 80;
  22.         density_code /= SPECIAL_DENSITY1;
  23.         /* default is 80 chars (8.0 in.), W_TRACTOR is 136 chars (13.6 in.) */
  24.         PED->ped_MaxXDots =
  25.                 (XDPI[density_code] * PED->ped_MaxColumns) / 10;
  26.         PED->ped_XDotsInch = XDPI[density_code];
  27.         PED->ped_YDotsInch = YDPI[density_code];
  28.         if ((PED->ped_YDotsInch = YDPI[density_code]) == 216) {
  29.                 PED->ped_NumRows = 24;
  30.         }
  31.         else if (PED->ped_YDotsInch == 144) {
  32.                 PED->ped_NumRows = 16;
  33.         }
  34.         else {
  35.                 PED->ped_NumRows = 8;
  36.         }
  37.         return((int)codes[density_code]);
  38. }
  39.  
  40.