30 #include <commdlg.h>
31
32 /************************************************************************
33 * AwtPrintControl class
34 */
35
36 class AwtPrintControl {
37 public:
38
39 /* sun.awt.windows.WPrinterJob methods & fields */
40
41 static jfieldID dialogOwnerPeerID;
42 static jfieldID driverDoesMultipleCopiesID;
43 static jfieldID driverDoesCollationID;
44 static jmethodID getPrintDCID;
45 static jmethodID setPrintDCID;
46 static jmethodID getDevmodeID;
47 static jmethodID setDevmodeID;
48 static jmethodID getDevnamesID;
49 static jmethodID setDevnamesID;
50 static jmethodID getWin32MediaID;
51 static jmethodID setWin32MediaID;
52 static jmethodID getWin32MediaTrayID;
53 static jmethodID setWin32MediaTrayID;
54 static jmethodID getColorID;
55 static jmethodID getCopiesID;
56 static jmethodID getSelectID;
57 static jmethodID getDestID;
58 static jmethodID getDialogID;
59 static jmethodID getFromPageID;
60 static jmethodID getMaxPageID;
61 static jmethodID getMinPageID;
62 static jmethodID getCollateID;
63 static jmethodID getOrientID;
64 static jmethodID getQualityID;
65 static jmethodID getPrintToFileEnabledID;
66 static jmethodID getPrinterID;
67 static jmethodID setPrinterID;
68 static jmethodID getResID;
69 static jmethodID getSidesID;
79 LPDWORD pcbBuf, LPTSTR * foundPrinter,
80 LPTSTR * foundPORT);
81 // This function determines whether the printer driver
82 // for the passed printer handle supports PRINTER_INFO
83 // structure of level dwLevel.
84 static BOOL IsSupportedLevel(HANDLE hPrinter, DWORD dwLevel);
85 static BOOL CreateDevModeAndDevNames(PRINTDLG *ppd,
86 LPTSTR pPrinterName,
87 LPTSTR pPortName);
88 static BOOL InitPrintDialog(JNIEnv *env,
89 jobject printCtrl, PRINTDLG &pd);
90 static BOOL UpdateAttributes(JNIEnv *env,
91 jobject printCtrl, PRINTDLG &pd);
92 static WORD getNearestMatchingPaper(LPTSTR printer, LPTSTR port,
93 double origWid, double origHgt,
94 double* newWid, double *newHgt);
95
96 static BOOL getDevmode(HANDLE hPrinter,
97 LPTSTR pPrinterName,
98 LPDEVMODE *pDevMode);
99
100 inline static HDC getPrintDC(JNIEnv *env, jobject self) {
101 return (HDC)env->CallLongMethod(self, getPrintDCID);
102 }
103
104 inline static void setPrintDC(JNIEnv *env, jobject self, HDC printDC) {
105 env->CallVoidMethod(self, setPrintDCID, (jlong)printDC);
106 }
107
108 inline static HGLOBAL getPrintHDMode(JNIEnv *env, jobject self) {
109 return (HGLOBAL) env->CallLongMethod(self, getDevmodeID);
110 }
111
112 inline static void setPrintHDMode(JNIEnv *env, jobject self,
113 HGLOBAL hGlobal) {
114 env->CallVoidMethod(self, setDevmodeID,
115 reinterpret_cast<jlong>(hGlobal));
116 }
117
118 inline static HGLOBAL getPrintHDName(JNIEnv *env, jobject self) {
|
30 #include <commdlg.h>
31
32 /************************************************************************
33 * AwtPrintControl class
34 */
35
36 class AwtPrintControl {
37 public:
38
39 /* sun.awt.windows.WPrinterJob methods & fields */
40
41 static jfieldID dialogOwnerPeerID;
42 static jfieldID driverDoesMultipleCopiesID;
43 static jfieldID driverDoesCollationID;
44 static jmethodID getPrintDCID;
45 static jmethodID setPrintDCID;
46 static jmethodID getDevmodeID;
47 static jmethodID setDevmodeID;
48 static jmethodID getDevnamesID;
49 static jmethodID setDevnamesID;
50 static jmethodID getParentWindowID;
51 static jmethodID getWin32MediaID;
52 static jmethodID setWin32MediaID;
53 static jmethodID getWin32MediaTrayID;
54 static jmethodID setWin32MediaTrayID;
55 static jmethodID getColorID;
56 static jmethodID getCopiesID;
57 static jmethodID getSelectID;
58 static jmethodID getDestID;
59 static jmethodID getDialogID;
60 static jmethodID getFromPageID;
61 static jmethodID getMaxPageID;
62 static jmethodID getMinPageID;
63 static jmethodID getCollateID;
64 static jmethodID getOrientID;
65 static jmethodID getQualityID;
66 static jmethodID getPrintToFileEnabledID;
67 static jmethodID getPrinterID;
68 static jmethodID setPrinterID;
69 static jmethodID getResID;
70 static jmethodID getSidesID;
80 LPDWORD pcbBuf, LPTSTR * foundPrinter,
81 LPTSTR * foundPORT);
82 // This function determines whether the printer driver
83 // for the passed printer handle supports PRINTER_INFO
84 // structure of level dwLevel.
85 static BOOL IsSupportedLevel(HANDLE hPrinter, DWORD dwLevel);
86 static BOOL CreateDevModeAndDevNames(PRINTDLG *ppd,
87 LPTSTR pPrinterName,
88 LPTSTR pPortName);
89 static BOOL InitPrintDialog(JNIEnv *env,
90 jobject printCtrl, PRINTDLG &pd);
91 static BOOL UpdateAttributes(JNIEnv *env,
92 jobject printCtrl, PRINTDLG &pd);
93 static WORD getNearestMatchingPaper(LPTSTR printer, LPTSTR port,
94 double origWid, double origHgt,
95 double* newWid, double *newHgt);
96
97 static BOOL getDevmode(HANDLE hPrinter,
98 LPTSTR pPrinterName,
99 LPDEVMODE *pDevMode);
100
101 inline static HWND getParentID(JNIEnv *env, jobject self) {
102 return (HWND)env->CallLongMethod(self, getParentWindowID);
103 }
104
105 inline static HDC getPrintDC(JNIEnv *env, jobject self) {
106 return (HDC)env->CallLongMethod(self, getPrintDCID);
107 }
108
109 inline static void setPrintDC(JNIEnv *env, jobject self, HDC printDC) {
110 env->CallVoidMethod(self, setPrintDCID, (jlong)printDC);
111 }
112
113 inline static HGLOBAL getPrintHDMode(JNIEnv *env, jobject self) {
114 return (HGLOBAL) env->CallLongMethod(self, getDevmodeID);
115 }
116
117 inline static void setPrintHDMode(JNIEnv *env, jobject self,
118 HGLOBAL hGlobal) {
119 env->CallVoidMethod(self, setDevmodeID,
120 reinterpret_cast<jlong>(hGlobal));
121 }
122
123 inline static HGLOBAL getPrintHDName(JNIEnv *env, jobject self) {
|