< prev index next >
src/java.desktop/share/native/libsplashscreen/splashscreen_impl.c
Print this page
*** 23,33 ****
* questions.
*/
#include "splashscreen_impl.h"
#include "splashscreen_gfx_impl.h"
!
int splashIsVisible = 0;
Splash *
SplashGetInstance()
{
--- 23,38 ----
* questions.
*/
#include "splashscreen_impl.h"
#include "splashscreen_gfx_impl.h"
! #define BUFF_SIZE 1024
! #ifdef _MSC_VER
! # ifndef snprintf
! # define snprintf _snprintf
! # endif
! #endif
int splashIsVisible = 0;
Splash *
SplashGetInstance()
{
*** 390,396 ****
return 1;
}
SPLASHEXPORT int
SplashGetScaledImgNameMaxPstfixLen(const char *fileName){
! return strlen(fileName) + strlen(".java-scale-200") + 1;
}
--- 395,497 ----
return 1;
}
SPLASHEXPORT int
SplashGetScaledImgNameMaxPstfixLen(const char *fileName){
! return strlen(fileName) + strlen("@100pct") + 1;
! }
!
! jboolean GetScaledImageName(const char *fileName, char *scaleImageName,
! float *scaleFactor, const size_t scaledImageLength) {
! if (*scaleFactor > 1.0) {
! FILE *fp = NULL;
! char scaledImgPct[BUFF_SIZE];
! char scaledImgX[BUFF_SIZE];
! char *scaledImageXName = NULL;
! char *scaledImagePctName = malloc(scaledImageLength);
! char *dupFileName = strdup(fileName);
! char *fileExtension = strrchr(dupFileName, '.');
! size_t lengthPct = 0;
! size_t lengthX = 0;
! int retValPct = 0;
! int retValX = 0;
! jboolean isPctScaledImage = (*scaleFactor * 100) != ((int) (*scaleFactor)) *100;
! snprintf(scaledImgPct, BUFF_SIZE, "%s%d%s", "@", (int) (*scaleFactor * 100), "pct");
! if (!isPctScaledImage) {
! scaledImageXName = malloc(scaledImageLength);
! snprintf(scaledImgX, BUFF_SIZE, "%s%d%s", "@", (int) (*scaleFactor), "x");
! }
! /*File is missing extension */
! if (fileExtension == NULL) {
! lengthPct = strlen(dupFileName) +
! strlen(scaledImgPct) + 1;
! if (!isPctScaledImage) {
! lengthX = strlen(dupFileName) +
! strlen(scaledImgX) + 1;
! }
! if (lengthPct > scaledImageLength || lengthX > scaledImageLength) {
! cleanUp(dupFileName, scaledImageXName, scaledImagePctName, scaleFactor);
! return JNI_FALSE;
! }
! retValPct = snprintf(scaledImagePctName, lengthPct, "%s%s", dupFileName,
! scaledImgPct);
! if (!isPctScaledImage) {
! retValX = snprintf(scaledImageXName, lengthX, "%s%s", dupFileName,
! scaledImgX);
! }
! if ((retValPct < 0 || (retValPct > lengthPct - 1)) ||
! (retValX < 0 || (retValX > lengthX - 1))) {
! cleanUp(dupFileName, scaledImageXName, scaledImagePctName, scaleFactor);
! return JNI_FALSE;
! }
! } else {
! int length_Without_Ext = fileExtension - dupFileName;
! lengthPct = length_Without_Ext + strlen(scaledImgPct) +
! strlen(fileExtension) + 1;
! if (!isPctScaledImage) {
! lengthX = length_Without_Ext + strlen(scaledImgX) +
! strlen(fileExtension) + 1;
! }
! if (lengthPct > scaledImageLength || lengthX > scaledImageLength) {
! cleanUp(dupFileName, scaledImageXName, scaledImagePctName, scaleFactor);
! return JNI_FALSE;
! }
! retValPct = snprintf(scaledImagePctName, lengthPct, "%.*s%s%s",
! length_Without_Ext, dupFileName, scaledImgPct, fileExtension);
! if(!isPctScaledImage) {
! retValX = snprintf(scaledImageXName, lengthX, "%.*s%s%s",
! length_Without_Ext, dupFileName, scaledImgX, fileExtension);
! }
! if ((retValPct < 0 || (retValPct > lengthPct - 1)) ||
! (retValX < 0 || (retValX > lengthX - 1))) {
! cleanUp(dupFileName, scaledImageXName, scaledImagePctName, scaleFactor);
! return JNI_FALSE;
! }
! }
! free(dupFileName);
! if (!(fp = fopen(scaledImagePctName, "r"))) {
! if (!isPctScaledImage && (fp = fopen(scaledImageXName, "r"))) {
! fclose(fp);
! strcpy(scaleImageName, scaledImageXName);
! free(scaledImageXName);
! free(scaledImagePctName);
! return JNI_TRUE;
! }
! cleanUp(NULL,scaledImageXName, scaledImagePctName, scaleFactor);
! return JNI_FALSE;
! }
! fclose(fp);
! strcpy(scaleImageName, scaledImagePctName);
! free(scaledImageXName);
! free(scaledImagePctName);
! return JNI_TRUE;
! }
! return JNI_FALSE;
! }
!
! void cleanUp(char *fName, char *xName, char *pctName, float *scaleFactor) {
! *scaleFactor = 1;
! free(fName);
! free(xName);
! free(pctName);
}
+
< prev index next >