< prev index next >

src/java.desktop/windows/native/libsplashscreen/splashscreen_sys.c

Print this page




 518 {
 519     MSG msg;
 520 
 521     while (GetMessage(&msg, NULL, 0, 0)) {
 522         TranslateMessage(&msg);
 523         DispatchMessage(&msg);
 524     }
 525 }
 526 
 527 DWORD WINAPI
 528 SplashScreenThread(LPVOID param)
 529 {
 530     Splash *splash = (Splash *) param;
 531 
 532     splash->currentFrame = 0;
 533     SplashLock(splash);
 534     splash->time = SplashTime();
 535     splash->hWnd = SplashCreateWindow(splash);
 536     if (splash->hWnd) {
 537         SplashRedrawWindow(splash);



 538         SplashUnlock(splash);
 539         SplashMessagePump();
 540         SplashLock(splash);
 541     }
 542     SplashDone(splash);
 543     splash->isVisible = -1;
 544     SplashUnlock(splash);
 545     return 0;
 546 }
 547 
 548 void
 549 SplashCreateThread(Splash * splash)
 550 {
 551     DWORD threadId;
 552 
 553     CreateThread(NULL, 0, SplashScreenThread, (LPVOID) splash, 0, &threadId);
 554 }
 555 
 556 void
 557 SplashClosePlatform(Splash * splash)


 565     PostMessage(splash->hWnd, WM_SPLASHUPDATE, 0, 0);
 566 }
 567 
 568 void
 569 SplashReconfigure(Splash * splash)
 570 {
 571     PostMessage(splash->hWnd, WM_SPLASHRECONFIGURE, 0, 0);
 572 }
 573 
 574 jboolean
 575 SplashGetScaledImageName(const char* jarName, const char* fileName,
 576                            float *scaleFactor, char *scaleImageName,
 577                            const size_t scaledImageLength)
 578 {
 579     float dpiScaleX = -1.0f;
 580     float dpiScaleY = -1.0f;
 581     FILE *fp = NULL;
 582     *scaleFactor = 1.0;
 583     GetScreenDpi(getPrimaryMonitor(), &dpiScaleX, &dpiScaleY);
 584     *scaleFactor = dpiScaleX > 0 ? dpiScaleX / 96 : *scaleFactor;
 585     if (*scaleFactor > 1.0) {
 586         char strDpi[BUFF_SIZE];
 587         char *dupFileName = strdup(fileName);
 588         char *fileExtension = strrchr(dupFileName, '.');
 589         char *nameToAppend = ".scale-";
 590         size_t length = 0;
 591         int retVal = 0;
 592         _snprintf(strDpi, BUFF_SIZE, "%d", (int)dpiScaleX);
 593         /*File is missing extension */
 594         if (fileExtension == NULL) {
 595             length = strlen(dupFileName) + strlen(nameToAppend) +
 596                 strlen(strDpi) + 1;
 597             if (length > scaledImageLength) {
 598                 *scaleFactor = 1;
 599                 free(dupFileName);
 600                 return JNI_FALSE;
 601             }
 602             retVal = _snprintf(scaleImageName, length, "%s%s%s", dupFileName,
 603                 nameToAppend, strDpi);
 604             if (retVal < 0 || (retVal != length - 1)) {
 605                 *scaleFactor = 1;
 606                 free(dupFileName);
 607                 return JNI_FALSE;
 608             }
 609         }
 610         else {
 611             size_t length_Without_Ext = fileExtension - dupFileName;
 612             length = length_Without_Ext + strlen(nameToAppend) + strlen(strDpi) +
 613                 strlen(fileExtension) + 1;
 614             if (length > scaledImageLength) {
 615                 *scaleFactor = 1;
 616                 free(dupFileName);
 617                 return JNI_FALSE;
 618             }
 619             retVal = _snprintf(scaleImageName, length, "%.*s%s%s%s",
 620                 length_Without_Ext, dupFileName, nameToAppend, strDpi, fileExtension);
 621             if (retVal < 0 || (retVal != length - 1)) {
 622                 *scaleFactor = 1;
 623                 free(dupFileName);
 624                 return JNI_FALSE;
 625             }
 626         }
 627         free(dupFileName);
 628         if (!(fp = fopen(scaleImageName, "r"))) {
 629             *scaleFactor = 1;
 630             return JNI_FALSE;
 631         }
 632         fclose(fp);
 633         return JNI_TRUE;
 634     }
 635     return JNI_FALSE;
 636 }



 518 {
 519     MSG msg;
 520 
 521     while (GetMessage(&msg, NULL, 0, 0)) {
 522         TranslateMessage(&msg);
 523         DispatchMessage(&msg);
 524     }
 525 }
 526 
 527 DWORD WINAPI
 528 SplashScreenThread(LPVOID param)
 529 {
 530     Splash *splash = (Splash *) param;
 531 
 532     splash->currentFrame = 0;
 533     SplashLock(splash);
 534     splash->time = SplashTime();
 535     splash->hWnd = SplashCreateWindow(splash);
 536     if (splash->hWnd) {
 537         SplashRedrawWindow(splash);
 538         //map the splash co-ordinates as per system scale
 539         splash->x /= splash->scaleFactor;
 540         splash->y /= splash->scaleFactor;
 541         SplashUnlock(splash);
 542         SplashMessagePump();
 543         SplashLock(splash);
 544     }
 545     SplashDone(splash);
 546     splash->isVisible = -1;
 547     SplashUnlock(splash);
 548     return 0;
 549 }
 550 
 551 void
 552 SplashCreateThread(Splash * splash)
 553 {
 554     DWORD threadId;
 555 
 556     CreateThread(NULL, 0, SplashScreenThread, (LPVOID) splash, 0, &threadId);
 557 }
 558 
 559 void
 560 SplashClosePlatform(Splash * splash)


 568     PostMessage(splash->hWnd, WM_SPLASHUPDATE, 0, 0);
 569 }
 570 
 571 void
 572 SplashReconfigure(Splash * splash)
 573 {
 574     PostMessage(splash->hWnd, WM_SPLASHRECONFIGURE, 0, 0);
 575 }
 576 
 577 jboolean
 578 SplashGetScaledImageName(const char* jarName, const char* fileName,
 579                            float *scaleFactor, char *scaleImageName,
 580                            const size_t scaledImageLength)
 581 {
 582     float dpiScaleX = -1.0f;
 583     float dpiScaleY = -1.0f;
 584     FILE *fp = NULL;
 585     *scaleFactor = 1.0;
 586     GetScreenDpi(getPrimaryMonitor(), &dpiScaleX, &dpiScaleY);
 587     *scaleFactor = dpiScaleX > 0 ? dpiScaleX / 96 : *scaleFactor;
 588     return GetScaledImageName(fileName, scaleImageName,
 589         scaleFactor, scaledImageLength);
 590     
















































 591 }
 592 
< prev index next >