Global oldprinter$
Global save1$
Global oldOrient%
Global savefn$

' field selection bits
Global Const DM_ORIENTATION = &H1
Global Const DM_PAPERSIZE = &H2
Global Const DM_PAPERLENGTH = &H4
Global Const DM_PAPERWIDTH = &H8
Global Const DM_SCALE = &H10
Global Const DM_COPIES = &H100
Global Const DM_DEFAULTSOURCE = &H200
Global Const DM_PRINTQUALITY = &H400
Global Const DM_COLOR = &H800
Global Const DM_DUPLEX = &H1000
Global Const DM_YRESOLUTION = &H2000
Global Const DM_TTOPTION = &H4000
Global Const DM_COLLATE = &H8000
Global Const DM_FORMNAME = &H10000
Global Const DM_LOGPIXELS = &H20000
Global Const DM_BITSPERPEL = &H40000
Global Const DM_PELSWIDTH = &H80000
Global Const DM_PELSHEIGHT = &H100000
Global Const DM_DISPLAYFLAGS = &H200000
Global Const DM_DISPLAYFREQUENCY = &H400000
Global Const DM_ICMMETHOD = &H800000
Global Const DM_ICMINTENT = &H1000000
Global Const DM_MEDIATYPE = &H2000000
Global Const DM_DITHERTYPE = &H4000000

' orientation selections
Global Const DMORIENT_PORTRAIT = 1
Global Const DMORIENT_LANDSCAPE = 2

' paper selections
Global Const DMPAPER_LETTER = 1                ' Letter 8 1/2 x 11 in
Global Const DMPAPER_LETTERSMALL = 2           ' Letter Small 8 1/2 x 11 in
Global Const DMPAPER_TABLOID = 3               ' Tabloid 11 x 17 in
Global Const DMPAPER_LEDGER = 4                ' Ledger 17 x 11 in
Global Const DMPAPER_LEGAL = 5                 ' Legal 8 1/2 x 14 in
Global Const DMPAPER_STATEMENT = 6             ' Statement 5 1/2 x 8 1/2 in
Global Const DMPAPER_EXECUTIVE = 7             ' Executive 7 1/4 x 10 1/2 in
Global Const DMPAPER_A3 = 8                    ' A3 297 x 420 mm
Global Const DMPAPER_A4 = 9                    ' A4 210 x 297 mm
Global Const DMPAPER_A4SMALL = 10              ' A4 Small 210 x 297 mm
Global Const DMPAPER_A5 = 11                   ' A5 148 x 210 mm
Global Const DMPAPER_B4 = 12                   ' B4 (JIS) 250 x 354
Global Const DMPAPER_B5 = 13                   ' B5 (JIS) 182 x 257 mm
Global Const DMPAPER_FOLIO = 14                ' Folio 8 1/2 x 13 in
Global Const DMPAPER_QUARTO = 15               ' Quarto 215 x 275 mm
Global Const DMPAPER_11X14 = 16                ' 1&H14 in
Global Const DMPAPER_11X17 = 17                ' 11x17 in
Global Const DMPAPER_NOTE = 18                 ' Note 8 1/2 x 11 in
Global Const DMPAPER_ENV_9 = 19                ' Envelope #9 3 7/8 x 8 7/8
Global Const DMPAPER_ENV_10 = 20               ' Envelope #10 4 1/8 x 9 1/2
Global Const DMPAPER_ENV_11 = 21               ' Envelope #11 4 1/2 x 10 3/8
Global Const DMPAPER_ENV_12 = 22               ' Envelope #12 4 \276 x 11
Global Const DMPAPER_ENV_14 = 23               ' Envelope #14 5 x 11 1/2
Global Const DMPAPER_CSHEET = 24               ' C size sheet
Global Const DMPAPER_DSHEET = 25               ' D size sheet
Global Const DMPAPER_ESHEET = 26               ' E size sheet
Global Const DMPAPER_ENV_DL = 27               ' Envelope DL 110 x 220mm
Global Const DMPAPER_ENV_C5 = 28               ' Envelope C5 162 x 229 mm
Global Const DMPAPER_ENV_C3 = 29               ' Envelope C3  324 x 458 mm
Global Const DMPAPER_ENV_C4 = 30               ' Envelope C4  229 x 324 mm
Global Const DMPAPER_ENV_C6 = 31               ' Envelope C6  114 x 162 mm
Global Const DMPAPER_ENV_C65 = 32              ' Envelope C65 114 x 229 mm
Global Const DMPAPER_ENV_B4 = 33               ' Envelope B4  250 x 353 mm
Global Const DMPAPER_ENV_B5 = 34               ' Envelope B5  176 x 250 mm
Global Const DMPAPER_ENV_B6 = 35               ' Envelope B6  176 x 125 mm
Global Const DMPAPER_ENV_ITALY = 36            ' Envelope 110 x 230 mm
Global Const DMPAPER_ENV_MONARCH = 37          ' Envelope Monarch 3.875 x 7.5 in
Global Const DMPAPER_ENV_PERSONAL = 38         ' 6 3/4 Envelope 3 5/8 x 6 1/2 in
Global Const DMPAPER_FANFOLD_US = 39           ' US Std Fanfold 14 7/8 x 11 in
Global Const DMPAPER_FANFOLD_STD_GERMAN = 40   ' German Std Fanfold 8 1/2 x 12 in
Global Const DMPAPER_FANFOLD_LGL_GERMAN = 41   ' German Legal Fanfold 8 1/2 x 13 in
Global Const DMPAPER_ISO_B4 = 42               ' B4 (ISO) 250 x 353 mm
Global Const DMPAPER_JAPANESE_POSTCARD = 43    ' Japanese Postcard 100 x 148 mm
Global Const DMPAPER_9X11 = 44                 ' 9 x 11 in
Global Const DMPAPER_11X11 = 45                ' 10 x 11 in
Global Const DMPAPER_15X11 = 46                ' 15 x 11 in
Global Const DMPAPER_ENV_INVITE = 47           ' Envelope Invite 220 x 220 mm
Global Const DMPAPER_RESERVED_48 = 48          ' RESERVED--DO NOT USE
Global Const DMPAPER_RESERVED_49 = 49          ' RESERVED--DO NOT USE
Global Const DMPAPER_LETTER_EXTRA = 50       ' Letter Extra 9 \275 x 12 in
Global Const DMPAPER_LEGAL_EXTRA = 51        ' Legal Extra 9 \275 x 15 in
Global Const DMPAPER_TABLOID_EXTRA = 52      ' Tabloid Extra 11.69 x 18 in
Global Const DMPAPER_A4_EXTRA = 53           ' A4 Extra 9.27 x 12.69 in
Global Const DMPAPER_LETTER_TRANSVERSE = 54    ' Letter Transverse 8 \275 x 11 in
Global Const DMPAPER_A4_TRANSVERSE = 55        ' A4 Transverse 210 x 297 mm
Global Const DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 ' Letter Extra Transverse 9\275 x 12 in
Global Const DMPAPER_A_PLUS = 57               ' SuperA/SuperA/A4 227 x 356 mm
Global Const DMPAPER_B_PLUS = 58               ' SuperB/SuperB/A3 305 x 487 mm
Global Const DMPAPER_LETTER_PLUS = 59          ' Letter Plus 8.5 x 12.69 in
Global Const DMPAPER_A4_PLUS = 60              ' A4 Plus 210 x 330 mm
Global Const DMPAPER_A5_TRANSVERSE = 61        ' A5 Transverse 148 x 210 mm
Global Const DMPAPER_B5_TRANSVERSE = 62        ' B5 (JIS) Transverse 182 x 257 mm
Global Const DMPAPER_A3_EXTRA = 63             ' A3 Extra 322 x 445 mm
Global Const DMPAPER_A5_EXTRA = 64             ' A5 Extra 174 x 235 mm
Global Const DMPAPER_B5_EXTRA = 65             ' B5 (ISO) Extra 201 x 276 mm
Global Const DMPAPER_A2 = 66                   ' A2 420 x 594 mm
Global Const DMPAPER_A3_TRANSVERSE = 67        ' A3 Transverse 297 x 420 mm
Global Const DMPAPER_A3_EXTRA_TRANSVERSE = 68  ' A3 Extra Transverse 322 x 445 mm

Global Const DMPAPER_USER = 256

' bin selections
Global Const DMBIN_UPPER = 1
Global Const DMBIN_ONLYONE = 1
Global Const DMBIN_LOWER = 2
Global Const DMBIN_MIDDLE = 3
Global Const DMBIN_MANUAL = 4
Global Const DMBIN_ENVELOPE = 5
Global Const DMBIN_ENVMANUAL = 6
Global Const DMBIN_AUTO = 7
Global Const DMBIN_TRACTOR = 8
Global Const DMBIN_SMALLFMT = 9
Global Const DMBIN_LARGEFMT = 10
Global Const DMBIN_LARGECAPACITY = 11
Global Const DMBIN_CASSETTE = 14
Global Const DMBIN_FORMSOURCE = 15

Global Const DMBIN_USER = 256              ' device specific bins start here

' print qualities
Global Const DMRES_DRAFT = (-1)
Global Const DMRES_LOW = (-2)
Global Const DMRES_MEDIUM = (-3)
Global Const DMRES_HIGH = (-4)

' color enable/disable for color printers
Global Const DMCOLOR_MONOCHROME = 1
Global Const DMCOLOR_COLOR = 2

' duplex enable
Global Const DMDUP_SIMPLEX = 1
Global Const DMDUP_VERTICAL = 2
Global Const DMDUP_HORIZONTAL = 3

' TrueType options
Global Const DMTT_BITMAP = 1           ' print TT fonts as graphics
Global Const DMTT_DOWNLOAD = 2         ' download TT fonts as soft fonts
Global Const DMTT_SUBDEV = 3           ' substitute device fonts for TT fonts
Global Const DMTT_DOWNLOAD_OUTLINE = 4 ' download TT fonts as outline soft fonts

' Collation selections
Global Const DMCOLLATE_FALSE = 0
Global Const DMCOLLATE_TRUE = 1

' DEVMODE dmDisplayFlags flags

Global Const DM_GRAYSCALE = &H1
Global Const DM_INTERLACED = &H2

' ICM methods
Global Const DMICMMETHOD_NONE = 1      ' ICM disabled
Global Const DMICMMETHOD_SYSTEM = 2    ' ICM handled by system
Global Const DMICMMETHOD_DRIVER = 3    ' ICM handled by driver
Global Const DMICMMETHOD_DEVICE = 4    ' ICM handled by device

Global Const DMICMMETHOD_USER = 256    ' Device-specific methods start here

' ICM Intents
Global Const DMICM_SATURATE = 1        ' Maximize color saturation
Global Const DMICM_CONTRAST = 2        ' Maximize color contrast
Global Const DMICM_COLORMETRIC = 3     ' Use specific color metric

Global Const DMICM_USER = 256          ' Device-specific intents start here

' Media types

Global Const DMMEDIA_STANDARD = 1        ' Standard paper
Global Const DMMEDIA_TRANSPARENCY = 2    ' Transparency
Global Const DMMEDIA_GLOSSY = 3          ' Glossy paper

Global Const DMMEDIA_USER = 256          ' Device-specific media start here

' Dither types
Global Const DMDITHER_NONE = 1       ' No dithering
Global Const DMDITHER_COARSE = 2     ' Dither with a coarse brush
Global Const DMDITHER_FINE = 3       ' Dither with a fine brush
Global Const DMDITHER_LINEART = 4    ' LineArt dithering
Global Const DMDITHER_ERRORDIFFUSION = 5 ' LineArt dithering
Global Const DMDITHER_RESERVED6 = 6      ' LineArt dithering
Global Const DMDITHER_RESERVED7 = 7      ' LineArt dithering
Global Const DMDITHER_RESERVED8 = 8      ' LineArt dithering
Global Const DMDITHER_RESERVED9 = 9      ' LineArt dithering

Global Const DMDITHER_GRAYSCALE = 10       ' Device does grayscaling

Global Const DMDITHER_USER = 256       ' Device-specific dithers start here

Global Const PP_GIMME = 0
Global Const PP_CHANGE_IT = 1
Global Const PP_UNNEEDED = 0

'================ device capabilities ================
Type DEVCAP
      DRIVERVERSION As Long
      TECHNOLOGY    As Long 'bits
      HORZSIZE      As Long
      VERTSIZE      As Long
      HORZRES       As Long
      VERTRES       As Long
      BITSPIXEL     As Long
      PLANES        As Long
      NUMBRUSHES    As Long
      NUMPENS       As Long
      NUMMARKERS    As Long
      NUMFONTS      As Long
      NUMCOLORS     As Long
      PDEVICESIZE   As Long
      CURVECAPS     As Long ' bits
      LINECAPS      As Long ' bits
      POLYGONALCAPS As Long ' bits
      TEXTCAPS      As Long ' bits
      CLIPCAPS      As Long ' bits
      RASTERCAPS    As Long ' bits
      ASPECTX       As Long
      ASPECTY       As Long
      ASPECTXY      As Long
      LOGPIXELSX    As Long
      LOGPIXELSY    As Long
      SIZEPALETTE  As Long
      NUMRESERVED  As Long
      COLORRES     As Long
      PHYSICALWIDTH   As Long
      PHYSICALHEIGHT  As Long
      PHYSICALOFFSETX As Long
      PHYSICALOFFSETY As Long
      SCALINGFACTORX  As Long
      SCALINGFACTORY  As Long
End Type
Global dc As DEVCAP
'---- return value masks ---

' TECHNOLOGY
Global Const DT_PLOTTER = 0
Global Const DT_RASDISPLAY = 1
Global Const DT_RASPRINTER = 2
Global Const DT_RASCAMERA = 3
Global Const DT_CHARSTREAM = 4
Global Const DT_METAFILE = 5
Global Const DT_DISPFILE = 6

' CURVECAPS
Global Const CC_NONE = &H0
Global Const CC_CIRCLES = &H1
Global Const CC_PIE = &H2
Global Const CC_CHORD = &H4
Global Const CC_ELLIPSES = &H8
Global Const CC_WIDE = &H10
Global Const CC_STYLED = &H20
Global Const CC_WIDESTYLED = &H40
Global Const CC_INTERIORS = &H80
Global Const CC_ROUNDRECT = &H100
                               
' LINECAPS
Global Const LC_NONE = &H0
Global Const LC_POLYLINE = &H2
Global Const LC_MARKER = &H4
Global Const LC_POLYMARKER = &H8
Global Const LC_WIDE = &H10
Global Const LC_STYLED = &H20
Global Const LC_WIDESTYLED = &H40
Global Const LC_INTERIORS = &H80

' POLYGONALCAPS
Global Const PC_NONE = &H0
Global Const PC_POLYGON = &H1
Global Const PC_RECTANGLE = &H2
Global Const PC_WINDPOLYGON = &H4
Global Const PC_SCANLINE = &H8
Global Const PC_WIDE = &H10
Global Const PC_STYLED = &H20
Global Const PC_WIDESTYLED = &H40
Global Const PC_INTERIORS = &H80

' TEXTCAPS
Global Const TC_OP_CHARACTER = &H1
Global Const TC_OP_STROKE = &H2
Global Const TC_CP_STROKE = &H4
Global Const TC_CR_90 = &H8
Global Const TC_CR_ANY = &H10
Global Const TC_SF_X_YINDEP = &H20
Global Const TC_SA_DOUBLE = &H40
Global Const TC_SA_INTEGER = &H80
Global Const TC_SA_CONTIN = &H100
Global Const TC_EA_DOUBLE = &H200
Global Const TC_IA_ABLE = &H400
Global Const TC_UA_ABLE = &H800
Global Const TC_SO_ABLE = &H1000
Global Const TC_RA_ABLE = &H2000
Global Const TC_VA_ABLE = &H4000
Global Const TC_RESERVED = &H8000

' CLIPCAPS
Global Const CP_NONE = &H0
Global Const CP_RECTANGLE = &H1
Global Const CP_REGION = &H2
                               
' RASTERCAPS
Global Const RC_NONE = &H0
Global Const RC_BITBLT = &H1
Global Const RC_BANDING = &H2
Global Const RC_SCALING = &H4
Global Const RC_BITMAP64 = &H8
Global Const RC_GDI20_OUTPUT = &H10
Global Const RC_GDI20_STATE = &H20
Global Const RC_SAVEBITMAP = &H40
Global Const RC_DI_BITMAP = &H80
Global Const RC_PALETTE = &H100
Global Const RC_DIBTODEV = &H200
Global Const RC_BIGFONT = &H400
Global Const RC_STRETCHBLT = &H800
Global Const RC_FLOODFILL = &H1000
Global Const RC_STRETCHDIB = &H2000
Global Const RC_OP_DX_OUTPUT = &H4000
Global Const RC_DEVBITS = &H8000

'---------- function declarations
Declare Function PPrtr Lib "PPRTR32.DLL" (ByVal hx As Long, ByVal i1 As Long, ByVal i2 As Long, ByVal i3 As Long) As Long
Declare Function DefPrtr Lib "PPRTR32.DLL" (ByVal newone As String, ByVal oldone As String) As Long
Declare Function Prtrs Lib "PPRTR32.DLL" (ByVal plist As String) As Long
Declare Function PrtrCap Lib "PPRTR32.DLL" (ndc As DEVCAP) As Long
Declare Function GetPrtr Lib "PPRTR32.DLL" (ByVal DefPrtr As String) As Long
Declare Function GetPort Lib "PPRTR32.DLL" (ByVal ptrport As String) As Long
Declare Function PPGetDriver Lib "PPRTR32.DLL" (ByVal sdriver As String) As Long
Declare Function PPGetSizes Lib "PPRTR32.DLL" (lPaperX As Long, lPaperY As Long, lPageX As Long, iPageY As Long, lPageLeft As Long, lPageTop As Long, lPixInX As Long, lPixInY As Long) As Long
Declare Function SetuPP Lib "PPRTR32.DLL" (ByVal hwndx As Long) As Long
Declare Function PPSetupFileName Lib "PPRTR32.DLL" (ByVal s1 As String, ByVal fn As String) As Long
Declare Function PPRemoveFileName Lib "PPRTR32.DLL" (ByVal s1 As String, ByVal fn As String) As Long
Declare Function PPResetDC Lib "PPRTR32.DLL" (ByVal hwndx As Long, ByVal hdcx As Long) As Long





