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 |