< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/CImage.m
Print this page
rev 54094 : 8257853: Remove dependencies on JNF's JNI utility functions in AWT and 2D code
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion
*** 23,33 ****
* questions.
*/
#import "jni_util.h"
#import <Cocoa/Cocoa.h>
- #import <JavaNativeFoundation/JavaNativeFoundation.h>
#import "GeomUtilities.h"
#import "ThreadUtilities.h"
#import "sun_lwawt_macosx_CImage.h"
--- 23,32 ----
*** 109,128 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArray
(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height)
{
jlong result = 0L;
! JNF_COCOA_ENTER(env);
NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height);
if (imageRep) {
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
[nsImage addRepresentation:imageRep];
result = ptr_to_jlong(nsImage);
}
! JNF_COCOA_EXIT(env);
return result;
}
/*
--- 108,127 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArray
(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height)
{
jlong result = 0L;
! JNI_COCOA_ENTER(env);
NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height);
if (imageRep) {
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
[nsImage addRepresentation:imageRep];
result = ptr_to_jlong(nsImage);
}
! JNI_COCOA_EXIT(env);
return result;
}
/*
*** 133,143 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArrays
(JNIEnv *env, jclass klass, jobjectArray buffers, jintArray widths, jintArray heights)
{
jlong result = 0L;
! JNF_COCOA_ENTER(env);
jsize num = (*env)->GetArrayLength(env, buffers);
NSMutableArray * reps = [NSMutableArray arrayWithCapacity: num];
jint * ws = (*env)->GetIntArrayElements(env, widths, NULL);
--- 132,142 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArrays
(JNIEnv *env, jclass klass, jobjectArray buffers, jintArray widths, jintArray heights)
{
jlong result = 0L;
! JNI_COCOA_ENTER(env);
jsize num = (*env)->GetArrayLength(env, buffers);
NSMutableArray * reps = [NSMutableArray arrayWithCapacity: num];
jint * ws = (*env)->GetIntArrayElements(env, widths, NULL);
*** 162,172 ****
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)];
[nsImage addRepresentations: reps];
result = ptr_to_jlong(nsImage);
}
! JNF_COCOA_EXIT(env);
return result;
}
/*
--- 161,171 ----
NSImage *nsImage = [[NSImage alloc] initWithSize:NSMakeSize(0, 0)];
[nsImage addRepresentations: reps];
result = ptr_to_jlong(nsImage);
}
! JNI_COCOA_EXIT(env);
return result;
}
/*
*** 177,195 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromIconSelector
(JNIEnv *env, jclass klass, jint selector)
{
NSImage *image = nil;
! JNF_COCOA_ENTER(env);
IconRef iconRef;
if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) {
image = [[NSImage alloc] initWithIconRef:iconRef];
ReleaseIconRef(iconRef);
}
! JNF_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
--- 176,194 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromIconSelector
(JNIEnv *env, jclass klass, jint selector)
{
NSImage *image = nil;
! JNI_COCOA_ENTER(env);
IconRef iconRef;
if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) {
image = [[NSImage alloc] initWithIconRef:iconRef];
ReleaseIconRef(iconRef);
}
! JNI_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
*** 200,215 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromFileContents
(JNIEnv *env, jclass klass, jstring file)
{
NSImage *image = nil;
! JNF_COCOA_ENTER(env);
! NSString *path = JNFNormalizedNSStringForPath(env, file);
image = [[NSImage alloc] initByReferencingFile:path];
! JNF_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
--- 199,214 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromFileContents
(JNIEnv *env, jclass klass, jstring file)
{
NSImage *image = nil;
! JNI_COCOA_ENTER(env);
! NSString *path = NormalizedPathNSStringFromJavaString(env, file);
image = [[NSImage alloc] initByReferencingFile:path];
! JNI_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
*** 220,238 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageOfFileFromLaunchServices
(JNIEnv *env, jclass klass, jstring file)
{
__block NSImage *image = nil;
! JNF_COCOA_ENTER(env);
! NSString *path = JNFNormalizedNSStringForPath(env, file);
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
image = [[[NSWorkspace sharedWorkspace] iconForFile:path] retain];
[image setScalesWhenResized:TRUE];
}];
! JNF_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
--- 219,237 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageOfFileFromLaunchServices
(JNIEnv *env, jclass klass, jstring file)
{
__block NSImage *image = nil;
! JNI_COCOA_ENTER(env);
! NSString *path = NormalizedPathNSStringFromJavaString(env, file);
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
image = [[[NSWorkspace sharedWorkspace] iconForFile:path] retain];
[image setScalesWhenResized:TRUE];
}];
! JNI_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
*** 243,257 ****
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromImageName
(JNIEnv *env, jclass klass, jstring name)
{
NSImage *image = nil;
! JNF_COCOA_ENTER(env);
! image = [[NSImage imageNamed:JNFJavaToNSString(env, name)] retain];
! JNF_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
--- 242,256 ----
JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromImageName
(JNIEnv *env, jclass klass, jstring name)
{
NSImage *image = nil;
! JNI_COCOA_ENTER(env);
! image = [[NSImage imageNamed:JavaStringToNSString(env, name)] retain];
! JNI_COCOA_EXIT(env);
return ptr_to_jlong(image);
}
/*
*** 261,282 ****
*/
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CImage_nativeCopyNSImageIntoArray
(JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint sw, jint sh,
jint dw, jint dh)
{
! JNF_COCOA_ENTER(env);
NSImage *img = (NSImage *)jlong_to_ptr(nsImgPtr);
jint *dst = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL);
if (dst) {
NSRect fromRect = NSMakeRect(0, 0, sw, sh);
NSRect toRect = NSMakeRect(0, 0, dw, dh);
CImage_CopyNSImageIntoArray(img, dst, fromRect, toRect);
(*env)->ReleasePrimitiveArrayCritical(env, buffer, dst, JNI_ABORT);
}
! JNF_COCOA_EXIT(env);
}
/*
* Class: sun_lwawt_macosx_CImage
* Method: nativeGetNSImageSize
--- 260,281 ----
*/
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CImage_nativeCopyNSImageIntoArray
(JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint sw, jint sh,
jint dw, jint dh)
{
! JNI_COCOA_ENTER(env);
NSImage *img = (NSImage *)jlong_to_ptr(nsImgPtr);
jint *dst = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL);
if (dst) {
NSRect fromRect = NSMakeRect(0, 0, sw, sh);
NSRect toRect = NSMakeRect(0, 0, dw, dh);
CImage_CopyNSImageIntoArray(img, dst, fromRect, toRect);
(*env)->ReleasePrimitiveArrayCritical(env, buffer, dst, JNI_ABORT);
}
! JNI_COCOA_EXIT(env);
}
/*
* Class: sun_lwawt_macosx_CImage
* Method: nativeGetNSImageSize
*** 285,299 ****
JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CImage_nativeGetNSImageSize
(JNIEnv *env, jclass klass, jlong nsImgPtr)
{
jobject size = NULL;
! JNF_COCOA_ENTER(env);
size = NSToJavaSize(env, [(NSImage *)jlong_to_ptr(nsImgPtr) size]);
! JNF_COCOA_EXIT(env);
return size;
}
/*
--- 284,298 ----
JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CImage_nativeGetNSImageSize
(JNIEnv *env, jclass klass, jlong nsImgPtr)
{
jobject size = NULL;
! JNI_COCOA_ENTER(env);
size = NSToJavaSize(env, [(NSImage *)jlong_to_ptr(nsImgPtr) size]);
! JNI_COCOA_EXIT(env);
return size;
}
/*
*** 305,320 ****
(JNIEnv *env, jclass clazz, jlong image, jdouble w, jdouble h)
{
if (!image) return;
NSImage *i = (NSImage *)jlong_to_ptr(image);
! JNF_COCOA_ENTER(env);
[i setScalesWhenResized:TRUE];
[i setSize:NSMakeSize(w, h)];
! JNF_COCOA_EXIT(env);
}
/*
* Class: sun_lwawt_macosx_CImage
* Method: nativeResizeNSImageRepresentations
--- 304,319 ----
(JNIEnv *env, jclass clazz, jlong image, jdouble w, jdouble h)
{
if (!image) return;
NSImage *i = (NSImage *)jlong_to_ptr(image);
! JNI_COCOA_ENTER(env);
[i setScalesWhenResized:TRUE];
[i setSize:NSMakeSize(w, h)];
! JNI_COCOA_EXIT(env);
}
/*
* Class: sun_lwawt_macosx_CImage
* Method: nativeResizeNSImageRepresentations
*** 324,343 ****
(JNIEnv *env, jclass clazz, jlong image, jdouble w, jdouble h)
{
if (!image) return;
NSImage *i = (NSImage *)jlong_to_ptr(image);
! JNF_COCOA_ENTER(env);
NSImageRep *imageRep = nil;
NSArray *imageRepresentations = [i representations];
NSEnumerator *imageEnumerator = [imageRepresentations objectEnumerator];
while ((imageRep = [imageEnumerator nextObject]) != nil) {
[imageRep setSize:NSMakeSize(w, h)];
}
! JNF_COCOA_EXIT(env);
}
NSComparisonResult getOrder(BOOL order){
return (NSComparisonResult) (order ? NSOrderedAscending : NSOrderedDescending);
}
--- 323,342 ----
(JNIEnv *env, jclass clazz, jlong image, jdouble w, jdouble h)
{
if (!image) return;
NSImage *i = (NSImage *)jlong_to_ptr(image);
! JNI_COCOA_ENTER(env);
NSImageRep *imageRep = nil;
NSArray *imageRepresentations = [i representations];
NSEnumerator *imageEnumerator = [imageRepresentations objectEnumerator];
while ((imageRep = [imageEnumerator nextObject]) != nil) {
[imageRep setSize:NSMakeSize(w, h)];
}
! JNI_COCOA_EXIT(env);
}
NSComparisonResult getOrder(BOOL order){
return (NSComparisonResult) (order ? NSOrderedAscending : NSOrderedDescending);
}
*** 353,363 ****
{
if (!image) return NULL;
jobjectArray jreturnArray = NULL;
NSImage *img = (NSImage *)jlong_to_ptr(image);
! JNF_COCOA_ENTER(env);
NSArray *imageRepresentations = [img representations];
if([imageRepresentations count] == 0){
return NULL;
}
--- 352,362 ----
{
if (!image) return NULL;
jobjectArray jreturnArray = NULL;
NSImage *img = (NSImage *)jlong_to_ptr(image);
! JNI_COCOA_ENTER(env);
NSArray *imageRepresentations = [img representations];
if([imageRepresentations count] == 0){
return NULL;
}
*** 403,425 ****
[imageRep pixelsWide], [imageRep pixelsHigh]);
[sortedPixelSizes addObject: [NSValue valueWithSize: pixelSize]];
}
count = [sortedPixelSizes count];
! static JNF_CLASS_CACHE(jc_Dimension, "java/awt/Dimension");
! jreturnArray = JNFNewObjectArray(env, &jc_Dimension, count);
CHECK_NULL_RETURN(jreturnArray, NULL);
for(i = 0; i < count; i++){
NSSize pixelSize = [[sortedPixelSizes objectAtIndex: i] sizeValue];
(*env)->SetObjectArrayElement(env, jreturnArray, i,
NSToJavaSize(env, pixelSize));
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
}
! JNF_COCOA_EXIT(env);
return jreturnArray;
}
/*
--- 402,424 ----
[imageRep pixelsWide], [imageRep pixelsHigh]);
[sortedPixelSizes addObject: [NSValue valueWithSize: pixelSize]];
}
count = [sortedPixelSizes count];
! DECLARE_CLASS_RETURN(jc_Dimension, "java/awt/Dimension", jreturnArray);
! jreturnArray = (*env)->NewObjectArray(env, count, jc_Dimension, NULL);
CHECK_NULL_RETURN(jreturnArray, NULL);
for(i = 0; i < count; i++){
NSSize pixelSize = [[sortedPixelSizes objectAtIndex: i] sizeValue];
(*env)->SetObjectArrayElement(env, jreturnArray, i,
NSToJavaSize(env, pixelSize));
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
}
! JNI_COCOA_EXIT(env);
return jreturnArray;
}
/*
*** 430,440 ****
JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CImage_nativeGetPlatformImageBytes
(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height)
{
jbyteArray result = 0L;
! JNF_COCOA_ENTER(env);
NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height);
if (imageRep) {
NSData *tiffImage = [imageRep TIFFRepresentation];
jsize tiffSize = (jsize)[tiffImage length];
--- 429,439 ----
JNIEXPORT jbyteArray JNICALL Java_sun_lwawt_macosx_CImage_nativeGetPlatformImageBytes
(JNIEnv *env, jclass klass, jintArray buffer, jint width, jint height)
{
jbyteArray result = 0L;
! JNI_COCOA_ENTER(env);
NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height);
if (imageRep) {
NSData *tiffImage = [imageRep TIFFRepresentation];
jsize tiffSize = (jsize)[tiffImage length];
*** 444,454 ****
CHECK_NULL_RETURN(tiffData, nil);
[tiffImage getBytes:tiffData];
(*env)->ReleasePrimitiveArrayCritical(env, result, tiffData, 0);
}
! JNF_COCOA_EXIT(env);
return result;
}
/*
--- 443,453 ----
CHECK_NULL_RETURN(tiffData, nil);
[tiffImage getBytes:tiffData];
(*env)->ReleasePrimitiveArrayCritical(env, result, tiffData, 0);
}
! JNI_COCOA_EXIT(env);
return result;
}
/*
*** 460,470 ****
(JNIEnv *env, jclass klass, jbyteArray sourceData)
{
jlong result = 0L;
CHECK_NULL_RETURN(sourceData, 0L);
! JNF_COCOA_ENTER(env);
jsize sourceSize = (*env)->GetArrayLength(env, sourceData);
if (sourceSize == 0) return 0L;
jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL);
--- 459,469 ----
(JNIEnv *env, jclass klass, jbyteArray sourceData)
{
jlong result = 0L;
CHECK_NULL_RETURN(sourceData, 0L);
! JNI_COCOA_ENTER(env);
jsize sourceSize = (*env)->GetArrayLength(env, sourceData);
if (sourceSize == 0) return 0L;
jbyte *sourceBytes = (*env)->GetPrimitiveArrayCritical(env, sourceData, NULL);
*** 474,482 ****
(*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT);
CHECK_NULL_RETURN(newImage, 0L);
result = ptr_to_jlong(newImage);
! JNF_COCOA_EXIT(env);
return result;
}
--- 473,481 ----
(*env)->ReleasePrimitiveArrayCritical(env, sourceData, sourceBytes, JNI_ABORT);
CHECK_NULL_RETURN(newImage, 0L);
result = ptr_to_jlong(newImage);
! JNI_COCOA_EXIT(env);
return result;
}
< prev index next >