186
187 jobjectArray objectArray = JNFCallObjectMethod(env, fPrinterJob, jm_getPageformatPrintablePeekgraphics, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode)
188 if (objectArray != NULL) {
189 // Get references to the return objects -> PageFormat, Printable, PeekGraphics
190 // Cheat - we know we either got NULL or a 3 element array
191 jobject pageFormat = (*env)->GetObjectArrayElement(env, objectArray, 0);
192 fCurPageFormat = JNFNewGlobalRef(env, pageFormat);
193 (*env)->DeleteLocalRef(env, pageFormat);
194
195 jobject painter = (*env)->GetObjectArrayElement(env, objectArray, 1);
196 fCurPainter = JNFNewGlobalRef(env, painter);
197 (*env)->DeleteLocalRef(env, painter);
198
199 jobject peekGraphics = (*env)->GetObjectArrayElement(env, objectArray, 2);
200 fCurPeekGraphics = JNFNewGlobalRef(env, peekGraphics);
201 (*env)->DeleteLocalRef(env, peekGraphics);
202
203 // Actually print and get the PageFormatArea
204 jobject pageFormatArea = JNFCallObjectMethod(env, fPrinterJob, jm_printAndGetPageFormatArea, fCurPainter, fCurPeekGraphics, fCurPageFormat, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode)
205 if (pageFormatArea != NULL) {
206 NSPrintingOrientation currentOrientation =
207 [[[NSPrintOperation currentOperation] printInfo] orientation];
208 // set page orientation
209 switch (JNFCallIntMethod(env, fCurPageFormat, jm_getOrientation)) {
210 case java_awt_print_PageFormat_PORTRAIT:
211 default:
212 if (currentOrientation != NSPortraitOrientation) {
213 [[[NSPrintOperation currentOperation] printInfo]
214 setOrientation:NSPortraitOrientation];
215 }
216 break;
217
218 case java_awt_print_PageFormat_LANDSCAPE:
219 case java_awt_print_PageFormat_REVERSE_LANDSCAPE:
220 if (currentOrientation != NSLandscapeOrientation) {
221 [[[NSPrintOperation currentOperation] printInfo]
222 setOrientation:NSLandscapeOrientation];
223 }
224 break;
225 }
226 result = JavaToNSRect(env, pageFormatArea);
227 (*env)->DeleteLocalRef(env, pageFormatArea);
228 } else {
229 [self releaseReferences:env];
230 result = NSZeroRect;
231 }
232
233 (*env)->DeleteLocalRef(env, objectArray);
234 } else {
235 [self releaseReferences:env];
236 result = NSZeroRect;
237 }
238
239 return result;
240 }
241
|
186
187 jobjectArray objectArray = JNFCallObjectMethod(env, fPrinterJob, jm_getPageformatPrintablePeekgraphics, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode)
188 if (objectArray != NULL) {
189 // Get references to the return objects -> PageFormat, Printable, PeekGraphics
190 // Cheat - we know we either got NULL or a 3 element array
191 jobject pageFormat = (*env)->GetObjectArrayElement(env, objectArray, 0);
192 fCurPageFormat = JNFNewGlobalRef(env, pageFormat);
193 (*env)->DeleteLocalRef(env, pageFormat);
194
195 jobject painter = (*env)->GetObjectArrayElement(env, objectArray, 1);
196 fCurPainter = JNFNewGlobalRef(env, painter);
197 (*env)->DeleteLocalRef(env, painter);
198
199 jobject peekGraphics = (*env)->GetObjectArrayElement(env, objectArray, 2);
200 fCurPeekGraphics = JNFNewGlobalRef(env, peekGraphics);
201 (*env)->DeleteLocalRef(env, peekGraphics);
202
203 // Actually print and get the PageFormatArea
204 jobject pageFormatArea = JNFCallObjectMethod(env, fPrinterJob, jm_printAndGetPageFormatArea, fCurPainter, fCurPeekGraphics, fCurPageFormat, jPageNumber); // AWT_THREADING Safe (AWTRunLoopMode)
205 if (pageFormatArea != NULL) {
206 NSPrintingOrientation currentOrientation =
207 [[[NSPrintOperation currentOperation] printInfo] orientation];
208 // set page orientation
209 switch (JNFCallIntMethod(env, fCurPageFormat, jm_getOrientation)) {
210 case java_awt_print_PageFormat_PORTRAIT:
211 default:
212 if (currentOrientation != NSPortraitOrientation) {
213 [[[NSPrintOperation currentOperation] printInfo]
214 setOrientation:NSPortraitOrientation];
215 }
216 break;
217
218 case java_awt_print_PageFormat_LANDSCAPE:
219 case java_awt_print_PageFormat_REVERSE_LANDSCAPE:
220 if (currentOrientation != NSLandscapeOrientation) {
221 [[[NSPrintOperation currentOperation] printInfo]
222 setOrientation:NSLandscapeOrientation];
223 }
224 break;
225 }
226 result = JavaToNSRect(env, pageFormatArea);
227 (*env)->DeleteLocalRef(env, pageFormatArea);
228 } else {
229 [self releaseReferences:env];
230 result = NSZeroRect;
231 }
232
233 (*env)->DeleteLocalRef(env, objectArray);
234 } else {
235 [self releaseReferences:env];
236 result = NSZeroRect;
237 }
238
239 return result;
240 }
241
|