8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 #include "splashscreen_impl.h"
27 #include "splashscreen_gfx_impl.h"
28
29 int splashIsVisible = 0;
30
31 Splash *
32 SplashGetInstance()
33 {
34 static Splash splash;
35 static int preInitialized = 0;
36 if (!preInitialized) {
37 memset(&splash, 0, sizeof(Splash));
38 splash.currentFrame = -1;
39 preInitialized = 1;
40 }
41 return &splash;
42 }
43
44 SPLASHEXPORT void
45 SplashSetFileJarName(const char* fileName, const char* jarName) {
46 Splash *splash = SplashGetInstance();
47
48 free(splash->fileName);
375
376 int SplashStreamInitFile(SplashStream * pStream, const char* filename) {
377 pStream->arg.stdio.f = fopen(filename, "rb");
378 pStream->read = readFile;
379 pStream->peek = peekFile;
380 pStream->close = closeFile;
381 return pStream->arg.stdio.f != 0;
382 }
383
384 int SplashStreamInitMemory(SplashStream * pStream, void* pData, int size) {
385 pStream->arg.mem.pData = (unsigned char*)pData;
386 pStream->arg.mem.pDataEnd = (unsigned char*)pData + size;
387 pStream->read = readMem;
388 pStream->peek = peekMem;
389 pStream->close = closeMem;
390 return 1;
391 }
392
393 SPLASHEXPORT int
394 SplashGetScaledImgNameMaxPstfixLen(const char *fileName){
395 return strlen(fileName) + strlen(".java-scale-200") + 1;
396 }
|
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 #include "splashscreen_impl.h"
27 #include "splashscreen_gfx_impl.h"
28 #define BUFF_SIZE 1024
29 #ifdef _MSC_VER
30 # ifndef snprintf
31 # define snprintf _snprintf
32 # endif
33 #endif
34 int splashIsVisible = 0;
35
36 Splash *
37 SplashGetInstance()
38 {
39 static Splash splash;
40 static int preInitialized = 0;
41 if (!preInitialized) {
42 memset(&splash, 0, sizeof(Splash));
43 splash.currentFrame = -1;
44 preInitialized = 1;
45 }
46 return &splash;
47 }
48
49 SPLASHEXPORT void
50 SplashSetFileJarName(const char* fileName, const char* jarName) {
51 Splash *splash = SplashGetInstance();
52
53 free(splash->fileName);
380
381 int SplashStreamInitFile(SplashStream * pStream, const char* filename) {
382 pStream->arg.stdio.f = fopen(filename, "rb");
383 pStream->read = readFile;
384 pStream->peek = peekFile;
385 pStream->close = closeFile;
386 return pStream->arg.stdio.f != 0;
387 }
388
389 int SplashStreamInitMemory(SplashStream * pStream, void* pData, int size) {
390 pStream->arg.mem.pData = (unsigned char*)pData;
391 pStream->arg.mem.pDataEnd = (unsigned char*)pData + size;
392 pStream->read = readMem;
393 pStream->peek = peekMem;
394 pStream->close = closeMem;
395 return 1;
396 }
397
398 SPLASHEXPORT int
399 SplashGetScaledImgNameMaxPstfixLen(const char *fileName){
400 return strlen(fileName) + strlen("@100pct") + 1;
401 }
402
403 jboolean GetScaledImageName(const char *fileName,char *scaleImageName,
404 float *scaleFactor, const size_t scaledImageLength) {
405 FILE *fp = NULL;
406 if (*scaleFactor > 1.0) {
407 char strDpi[BUFF_SIZE];
408 char *dupFileName = strdup(fileName);
409 char *fileExtension = strrchr(dupFileName, '.');
410 size_t length = 0;
411 int retVal = 0;
412 if((*scaleFactor * 100) != ((int)(*scaleFactor)) * 100) {
413 snprintf(strDpi, BUFF_SIZE, "%s%d%s", "@", (int)(*scaleFactor * 100), "pct");
414 } else {
415 snprintf(strDpi, BUFF_SIZE, "%s%d%s", "@", (int)(*scaleFactor), "x");
416 }
417 /*File is missing extension */
418 if (fileExtension == NULL) {
419 length = strlen(dupFileName) +
420 strlen(strDpi) + 1;
421 if (length > scaledImageLength) {
422 *scaleFactor = 1;
423 free(dupFileName);
424 return JNI_FALSE;
425 }
426 retVal = snprintf(scaleImageName, length, "%s%s", dupFileName,
427 strDpi);
428 if (retVal < 0 || (retVal != length - 1)) {
429 *scaleFactor = 1;
430 free(dupFileName);
431 return JNI_FALSE;
432 }
433 } else {
434 int length_Without_Ext = fileExtension - dupFileName;
435 length = length_Without_Ext + strlen(strDpi) +
436 strlen(fileExtension) + 1;
437 if (length > scaledImageLength) {
438 *scaleFactor = 1;
439 free(dupFileName);
440 return JNI_FALSE;
441 }
442 retVal = snprintf(scaleImageName, length, "%.*s%s%s",
443 length_Without_Ext, dupFileName, strDpi, fileExtension);
444 if (retVal < 0 || (retVal != length - 1)) {
445 *scaleFactor = 1;
446 free(dupFileName);
447 return JNI_FALSE;
448 }
449 }
450 free(dupFileName);
451 if (!(fp = fopen(scaleImageName, "r"))) {
452 *scaleFactor = 1;
453 return JNI_FALSE;
454 }
455 fclose(fp);
456 return JNI_TRUE;
457 }
458 return JNI_FALSE;
459 }
460
|