]>
Commit | Line | Data |
---|---|---|
4e6664c6 AG |
1 | --- scorched/src/common/image/ImagePngFactory.cpp~ 2010-08-07 23:27:04.000000000 +0200 |
2 | +++ scorched/src/common/image/ImagePngFactory.cpp 2012-02-12 12:56:58.330929507 +0100 | |
3 | @@ -104,7 +104,7 @@ | |
4 | ||
5 | static void user_png_error(png_structp png_ptr, png_const_charp msg) | |
6 | { | |
7 | - longjmp(png_ptr->jmpbuf,1); | |
8 | + longjmp(png_jmpbuf(png_ptr),1); | |
9 | } | |
10 | ||
11 | static void user_png_warning(png_structp png_ptr, png_const_charp msg) | |
12 | --- scorched/src/client/client/LoadPNG.cpp~ 2010-08-16 01:26:36.000000000 +0200 | |
13 | +++ scorched/src/client/client/LoadPNG.cpp 2012-02-12 12:51:20.395625495 +0100 | |
14 | @@ -12,7 +12,7 @@ | |
15 | ||
16 | SDL_Surface *EXT_LoadPNG_RW(SDL_RWops *src) | |
17 | { | |
18 | - int start; | |
19 | + int start, num_palette; | |
20 | const char *error; | |
21 | SDL_Surface *volatile surface; | |
22 | png_structp png_ptr; | |
23 | @@ -28,6 +28,7 @@ | |
24 | int row, i; | |
25 | volatile int ckey = -1; | |
26 | png_color_16 *transv; | |
27 | + png_colorp png_palette; | |
28 | ||
29 | if ( !src ) { | |
30 | /* The error message has been set in SDL_RWFromFile */ | |
31 | @@ -58,7 +59,7 @@ | |
32 | * the normal method of doing things with libpng). REQUIRED unless you | |
33 | * set up your own error handlers in png_create_read_struct() earlier. | |
34 | */ | |
35 | - if ( setjmp(png_ptr->jmpbuf) ) { | |
36 | + if ( setjmp(png_jmpbuf(png_ptr)) ) { | |
37 | error = "Error reading the PNG file."; | |
38 | goto done; | |
39 | } | |
40 | @@ -127,9 +128,9 @@ | |
41 | Rmask = 0x000000FF; | |
42 | Gmask = 0x0000FF00; | |
43 | Bmask = 0x00FF0000; | |
44 | - Amask = (info_ptr->channels == 4) ? 0xFF000000 : 0; | |
45 | + Amask = (png_get_channels(png_ptr, info_ptr) == 4) ? 0xFF000000 : 0; | |
46 | } else { | |
47 | - int s = (info_ptr->channels == 4) ? 0 : 8; | |
48 | + int s = (png_get_channels(png_ptr, info_ptr) == 4) ? 0 : 8; | |
49 | Rmask = 0xFF000000 >> s; | |
50 | Gmask = 0x00FF0000 >> s; | |
51 | Bmask = 0x0000FF00 >> s; | |
52 | @@ -137,7 +138,7 @@ | |
53 | } | |
54 | } | |
55 | surface = SDL_AllocSurface(SDL_SWSURFACE, width, height, | |
56 | - bit_depth*info_ptr->channels, Rmask,Gmask,Bmask,Amask); | |
57 | + bit_depth*png_get_channels(png_ptr, info_ptr), Rmask,Gmask,Bmask,Amask); | |
58 | if ( surface == NULL ) { | |
59 | error = "Out of memory"; | |
60 | goto done; | |
61 | @@ -177,6 +178,7 @@ | |
62 | ||
63 | /* Load the palette, if any */ | |
64 | palette = surface->format->palette; | |
65 | + png_get_PLTE(png_ptr, info_ptr, &png_palette, &num_palette); | |
66 | if ( palette ) { | |
67 | if(color_type == PNG_COLOR_TYPE_GRAY) { | |
68 | palette->ncolors = 256; | |
69 | @@ -185,12 +187,12 @@ | |
70 | palette->colors[i].g = i; | |
71 | palette->colors[i].b = i; | |
72 | } | |
73 | - } else if (info_ptr->num_palette > 0 ) { | |
74 | - palette->ncolors = info_ptr->num_palette; | |
75 | - for( i=0; i<info_ptr->num_palette; ++i ) { | |
76 | - palette->colors[i].b = info_ptr->palette[i].blue; | |
77 | - palette->colors[i].g = info_ptr->palette[i].green; | |
78 | - palette->colors[i].r = info_ptr->palette[i].red; | |
79 | + } else if (num_palette > 0 ) { | |
80 | + palette->ncolors = num_palette; | |
81 | + for( i=0; i<num_palette; ++i ) { | |
82 | + palette->colors[i].b = png_palette[i].blue; | |
83 | + palette->colors[i].g = png_palette[i].green; | |
84 | + palette->colors[i].r = png_palette[i].red; | |
85 | } | |
86 | } | |
87 | } |