src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m

Print this page

        

*** 123,132 **** --- 123,165 ---- done: setlocale(LC_ALL, old_locale); return buf; } + char* SplashGetScaledImageName(const char* jar, const char* file, + float *scaleFactor) { + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + *scaleFactor = 1; + char* scaledFile = nil; + float screenScaleFactor = [SplashNSScreen() backingScaleFactor]; + + if (screenScaleFactor > 1) { + NSString *fileName = [NSString stringWithUTF8String: file]; + NSUInteger length = [fileName length]; + NSRange range = [fileName rangeOfString: @"." + options:NSBackwardsSearch]; + NSUInteger dotIndex = range.location; + NSString *fileName2x = nil; + + if (dotIndex == NSNotFound) { + fileName2x = [fileName stringByAppendingString: @"@2x"]; + } else { + fileName2x = [fileName substringToIndex: dotIndex]; + fileName2x = [fileName2x stringByAppendingString: @"@2x"]; + fileName2x = [fileName2x stringByAppendingString: + [fileName substringFromIndex: dotIndex]]; + } + + if ((fileName2x != nil) && (jar || [[NSFileManager defaultManager] + fileExistsAtPath: fileName2x])){ + *scaleFactor = 2; + scaledFile = strdup([fileName2x UTF8String]); + } + } + [pool drain]; + return scaledFile; + } void SplashInitPlatform(Splash * splash) { pthread_mutex_init(&splash->lock, NULL);
*** 223,232 **** --- 256,273 ---- NSImage * image = [[NSImage alloc] initWithSize: NSMakeSize(splash->width, splash->height)]; [image setBackgroundColor: [NSColor clearColor]]; [image addRepresentation: rep]; + float scaleFactor = splash->scaleFactor; + if (scaleFactor > 0 && scaleFactor != 1) { + [image setScalesWhenResized:YES]; + NSSize size = [image size]; + size.width /= scaleFactor; + size.height /= scaleFactor; + [image setSize: size]; + } NSImageView * view = [[NSImageView alloc] init]; [view setImage: image]; [view setEditable: NO];