devcap dc
string oldprinter

// field selection bits
int DM_ORIENTATION = 1        //&H1
int DM_PAPERSIZE =   2        //&H2
int DM_PAPERLENGTH = 4        //&H4
int DM_PAPERWIDTH =  5        //&H8
int DM_SCALE =       16       //&H10
int DM_COPIES =      256      //&H100
int DM_DEFAULTSOURCE =  512   //&H200
int DM_PRINTQUALITY =  1024   //&H400
int DM_COLOR =      2048      //&H800
int DM_DUPLEX =     4096      //&H1000
int DM_YRESOLUTION = 8192     //&H2000
int DM_TTOPTION =    16384    //&H4000
uint DM_COLLATE  = 32768        //&H8000
uint DM_FORMNAME  = 65536       //&H10000
long DM_LOGPIXELS   = 131972       //&H20000
long DM_BITSPERPEL = 262144       //&H40000
long DM_PELSWIDTH   = 524288      //&H80000L
long DM_PELSHEIGHT  = 1048576     //&H100000
long DM_DISPLAYFLAGS  = 2097152   //&H200000
long DM_DISPLAYFREQUENCY = 4194304    //&400000
long DM_ICMMETHOD = 8388608	   //&H800000
long DM_ICMINTENT = 16777216           //&H1000000
long DM_MEDIATYPE = 33554432     //&H2000000
long DM_DITHERTYPE = 67108864   //&H4000000

// orientation selections
uint DMORIENT_PORTRAIT = 1
uint DMORIENT_LANDSCAPE = 2

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


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

// print qualities
int DMRES_DRAFT = -1
int DMRES_LOW = -2
int DMRES_MEDIUM = -3
int DMRES_HIGH = -4

// color enable/disable for color printers
int DMCOLOR_MONOCHROME = 1
int DMCOLOR_COLOR = 2

// duplex enable
int DMDUP_SIMPLEX = 1
int DMDUP_VERTICAL = 2
int DMDUP_HORIZONTAL = 3

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

int PP_GIMME = 0
int PP_CHANGE_IT = 1
int PP_UNNEEDED = 0

//---- return value masks ---

// TECHNOLOGY
int DT_PLOTTER = 0
int DT_RASDISPLAY = 1
int DT_RASPRINTER = 2
int DT_RASCAMERA = 3
int DT_CHARSTREAM = 4
int DT_METAFILE = 5
int DT_DISPFILE = 6

// CURVECAPS
int CC_NONE =      0          //&H0
int CC_CIRCLES =   1          //&H1
int CC_PIE =       2          //&H2
int CC_CHORD =     4          //&H4
int CC_ELLIPSES =  8          //&H8
int CC_WIDE =      16         //&H10
int CC_STYLED =    32         //&H20
int CC_WIDESTYLED =64         //&H40
int CC_INTERIORS = 128        //&H80
int CC_ROUNDRECT = 256        //&H100
                               
// LINECAPS
int LC_NONE =      0          //&H0
int LC_POLYLINE =  2          //&H2
int LC_MARKER =    4          //&H4
int LC_POLYMARKER =8          //&H8
int LC_WIDE =      16         //&H10
int LC_STYLED =    32         //&H20
int LC_WIDESTYLED =64         //&H40
int LC_INTERIORS = 128        //&H80

// POLYGONALCAPS
int PC_NONE =       0         //&H0
int PC_POLYGON =    1         //&H1
int PC_RECTANGLE =  2         //&H2
int PC_WINDPOLYGON =4         //&H4
int PC_SCANLINE =   8         //&H8
int PC_WIDE =       16        //&H10
int PC_STYLED =     32        //&H20
int PC_WIDESTYLED = 64        //&H40
int PC_INTERIORS =  128       //&H80

// TEXTCAPS
int TC_NONE = 0
int TC_OP_CHARACTER = 1        //&H1
int TC_OP_STROKE =    2     //&H2
int TC_CP_STROKE =    4     //&H4
int TC_CR_90 =        8      //&H8
int TC_CR_ANY =       16     //&H10
int TC_SF_X_YINDEP =  32       //&H20
int TC_SA_DOUBLE =    64     //&H40
int TC_SA_INTEGER =   128      //&H80
int TC_SA_CONTIN =    256     //&H100
int TC_EA_DOUBLE =    512     //&H200
int TC_IA_ABLE =      1024   //&H400
int TC_UA_ABLE =      2048   //&H800
int TC_SO_ABLE =      4096   //&H1000
int TC_RA_ABLE =      8192   //&H2000
uint TC_VA_ABLE =      16384   //&H4000
uint TC_RESERVED =     32768    //&H8000

// CLIPCAPS
int CP_NONE =       0  //&H0
int CP_RECTANGLE =  1       //&H1
int CP_REGION =     2    //&H2
                               
// RASTERCAPS
int RC_NONE =       0  //&H0
int RC_BITBLT =     1    //&H1
int RC_BANDING =    2     //&H2
int RC_SCALING =    4     //&H4
int RC_BITMAP64 =   8      //&H8
int RC_GDI20_OUTPUT = 16        //&H10
int RC_GDI20_STATE =  32       //&H20
int RC_SAVEBITMAP =   64      //&H40
int RC_DI_BITMAP =    128     //&H80
int RC_PALETTE =      256   //&H100
int RC_DIBTODEV =     512    //&H200
int RC_BIGFONT =      1024   //&H400
int RC_STRETCHBLT =   2048      //&H800
int RC_FLOODFILL =    4096     //&H1000
int RC_STRETCHDIB =   8192      //&H2000
uint RC_OP_DX_OUTPUT = 16384        //&H4000
uint RC_DEVBITS =      32768   //&H8000


// Collation selections 
int DMCOLLATE_FALSE = 0
int DMCOLLATE_TRUE =  1

// DEVMODE dmDisplayFlags flags 
int DM_GRAYSCALE = 1    //&H1
int DM_INTERLACED = 2    //&H2

// ICM methods 
int DMICMMETHOD_NONE    = 1   // ICM disabled 
int DMICMMETHOD_SYSTEM  = 2   // ICM handled by system 
int DMICMMETHOD_DRIVER  = 3   // ICM handled by driver 
int DMICMMETHOD_DEVICE  = 4   // ICM handled by device 

// ICM Intents 
int DMICM_SATURATE     = 1   // Maximize color saturation 
int DMICM_CONTRAST     = 2   // Maximize color contrast 
int DMICM_COLORMETRIC  = 3   // Use specific color metric 


// Media types 
int DMMEDIA_STANDARD     = 1   // Standard paper 
int DMMEDIA_TRANSPARENCY = 2   // Transparency 
int DMMEDIA_GLOSSY       = 3   // Glossy paper 

// Dither types 
int DMDITHER_NONE	    = 1   // No dithering 
int DMDITHER_COARSE         = 2   // Dither with a coarse brush 
int DMDITHER_FINE	    = 3   // Dither with a fine brush 
int DMDITHER_LINEART        = 4   // LineArt dithering 
int DMDITHER_ERRORDIFFUSION = 5   // LineArt dithering 
int DMDITHER_RESERVED6	    = 6   // LineArt dithering 
int DMDITHER_RESERVED7	    = 7   // LineArt dithering 
int DMDITHER_RESERVED8	    = 8   // LineArt dithering 
int DMDITHER_RESERVED9	    = 9   // LineArt dithering 
int DMDITHER_GRAYSCALE      =10   // Device does grayscaling 

// external function declarations

Function long PPrtr  (long hWnd, long ppSelection, long PPNewValue, long ppAction) Library "PPRTR32.DLL"
Function long SetuPP (long hWnd) Library "PPRTR32.DLL"
Function  long  DefPrtr  (string newone, ref string stringoldone)  Library "PPRTR32.DLL"
Function long  Prtrs (ref string plist)  Library "PPRTR32.DLL"
Function long  PrtrCap (ref devcap xdc) Library "PPRTR32.DLL"
Function long  GetPrtr (ref string DefPrtr) Library "PPRTR32.DLL"
Function long  GetPort  (ref string ptrport) Library "PPRTR32.DLL"
Function long PPGetDriver (ref string sdriver) Library "PPRTR32.DLL"
Function long PPGetSizes (ref long iPaperX, ref long iPaperY, ref long iPageX, ref long iPageY, ref long iPageLeft, ref long iPageTop, ref long iPixInX, ref long iPixInY) Library "PPRTR32.DLL"
Function long PPSetupFileName (ref string ptr, ref string fn) Library "PPRTR32.DLL"
Function long PPRemoveFileName (ref string ptr, ref string fn) Library "PPRTR32.DLL"

