Skip to content

Commit 0638d7c

Browse files
guiltSiegeLord
authored andcommitted
Address PR Comments.
1 parent f8e3752 commit 0638d7c

File tree

3 files changed

+69
-58
lines changed

3 files changed

+69
-58
lines changed

addons/image/freeimage.c

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,24 @@ ALLEGRO_DEBUG_CHANNEL("image")
1515

1616
static bool freeimage_initialized = false;
1717

18+
static void _fiio_al_error_handler(FREE_IMAGE_FORMAT fif, void *message) {
19+
ALLEGRO_ERROR("FreeImage %s : %s\n", (fif == FIF_UNKNOWN)? "UNKNOWN" : FreeImage_GetFormatFromFIF(fif), message);
20+
}
21+
1822
bool _al_init_fi(void)
1923
{
20-
if(freeimage_initialized)
21-
return true;
24+
if (freeimage_initialized)
25+
return true;
2226
FreeImage_Initialise(FALSE);
2327
_al_add_exit_func(_al_shutdown_fi, "_al_shutdown_fi");
28+
FreeImage_SetOutputMessage(_fiio_al_error_handler);
2429
return true;
2530
}
2631

2732
void _al_shutdown_fi(void)
2833
{
29-
if(!freeimage_initialized)
30-
return;
34+
if (!freeimage_initialized)
35+
return;
3136
FreeImage_DeInitialise();
3237
freeimage_initialized = false;
3338
}
@@ -38,16 +43,16 @@ static ALLEGRO_BITMAP *_al_fi_to_al_bitmap(FIBITMAP *fib) {
3843
width = FreeImage_GetWidth(fib);
3944
height = FreeImage_GetHeight(fib);
4045
bitmap = al_create_bitmap(width, height);
41-
if(bitmap) {
46+
if (bitmap) {
4247
ALLEGRO_LOCKED_REGION *a_lock = al_lock_bitmap(bitmap,
4348
ALLEGRO_PIXEL_FORMAT_ARGB_8888, ALLEGRO_LOCK_WRITEONLY);
4449
if (a_lock) {
4550
unsigned char *out = (unsigned char *)a_lock->data;
4651
int out_inc = a_lock->pitch - (width*4);
47-
for(int j=height - 1; j > -1; --j) {
48-
for(int i=0; i < width; ++i) {
49-
RGBQUAD color;
50-
if(FreeImage_GetPixelColor(fib, i, j, &color) == FALSE) {
52+
for (int j=height - 1; j > -1; --j) {
53+
for (int i=0; i < width; ++i) {
54+
RGBQUAD color = { 0.0, 0.0, 0.0, 0.0 } ;
55+
if (FreeImage_GetPixelColor(fib, i, j, &color) == FALSE) {
5156
ALLEGRO_ERROR("Unable to get pixel data at %d,%d\n", i , j);
5257
}
5358
*out++ = (unsigned char) color.rgbBlue;
@@ -73,19 +78,21 @@ ALLEGRO_BITMAP *_al_load_fi_bitmap(const char *filename, int flags)
7378
ASSERT(freeimage_initialized == true);
7479

7580
fif = FreeImage_GetFIFFromFilename(filename);
76-
if(fif == FIF_UNKNOWN)
81+
if (fif == FIF_UNKNOWN)
7782
fif = FreeImage_GetFileType(filename, 0);
78-
if(fif == FIF_UNKNOWN)
79-
return bitmap;
83+
if (fif == FIF_UNKNOWN) {
84+
ALLEGRO_WARN("Could not determine the file type for '%s'", filename);
85+
return NULL;
86+
}
8087

8188
{
8289
FIBITMAP *fibRaw = FreeImage_Load(fif, filename, flags);
83-
if(!fibRaw)
84-
return bitmap;
90+
if (!fibRaw)
91+
return NULL;
8592
fib = FreeImage_ConvertTo32Bits(fibRaw);
8693
FreeImage_Unload(fibRaw);
87-
if(!fib)
88-
return bitmap;
94+
if (!fib)
95+
return NULL;
8996
}
9097

9198
bitmap = _al_fi_to_al_bitmap(fib);
@@ -125,17 +132,19 @@ ALLEGRO_BITMAP *_al_load_fi_bitmap_f(ALLEGRO_FILE *f, int flags)
125132
fio.tell_proc = _fiio_al_ftell;
126133

127134
fif = FreeImage_GetFileTypeFromHandle(&fio, (fi_handle)f, 0);
128-
if(fif == FIF_UNKNOWN)
129-
return bitmap;
135+
if (fif == FIF_UNKNOWN) {
136+
ALLEGRO_WARN("Could not determine the file type for Allegro file.");
137+
return NULL;
138+
}
130139

131140
{
132141
FIBITMAP *fibRaw = FreeImage_LoadFromHandle(fif, &fio, (fi_handle)f, 0);
133-
if(!fibRaw)
134-
return bitmap;
142+
if (!fibRaw)
143+
return NULL;
135144
fib = FreeImage_ConvertTo32Bits(fibRaw);
136145
FreeImage_Unload(fibRaw);
137-
if(!fib)
138-
return bitmap;
146+
if (!fib)
147+
return NULL;
139148
}
140149

141150
bitmap = _al_fi_to_al_bitmap(fib);
@@ -158,8 +167,10 @@ bool _al_identify_fi(ALLEGRO_FILE *f)
158167
fio.tell_proc = _fiio_al_ftell;
159168

160169
fif = FreeImage_GetFileTypeFromHandle(&fio, (fi_handle)f, 0);
161-
if(fif == FIF_UNKNOWN)
170+
if (fif == FIF_UNKNOWN) {
171+
ALLEGRO_WARN("Could not determine the file type for Allegro file.");
162172
return false;
173+
}
163174

164175
return true;
165176
}

addons/image/iio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ bool al_init_image_addon(void)
6565
for (i = 0; extensions[i]; i++) {
6666
success |= al_register_bitmap_loader(extensions[i], _al_load_fi_bitmap);
6767
success |= al_register_bitmap_loader_f(extensions[i], _al_load_fi_bitmap_f);
68-
success |= al_register_bitmap_identifier(extensions[i], _al_load_fi_bitmap_f);
68+
success |= al_register_bitmap_identifier(extensions[i], _al_identify_fi);
6969
}
7070
}
7171
}

cmake/FindFreeImage.cmake

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,48 +8,48 @@
88
#
99

1010
IF (WIN32)
11-
FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h
12-
$ENV{FI_HOME}/include
13-
${FREEIMAGE_ROOT_DIR}/include
14-
${FREEIMAGE_ROOT_DIR}
15-
DOC "The directory where FreeImage.h resides")
16-
FIND_LIBRARY( FREEIMAGE_LIBRARY
17-
NAMES FreeImage freeimage
18-
PATHS
19-
$ENV{FI_HOME}/lib/$ENV{PROCESSOR_ARCHITECTURE}
20-
${FREEIMAGE_ROOT_DIR}/lib
21-
${FREEIMAGE_ROOT_DIR}
22-
DOC "The FreeImage library")
11+
FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h
12+
$ENV{FI_HOME}/include
13+
${FREEIMAGE_ROOT_DIR}/include
14+
${FREEIMAGE_ROOT_DIR}
15+
DOC "The directory where FreeImage.h resides")
16+
FIND_LIBRARY( FREEIMAGE_LIBRARY
17+
NAMES FreeImage freeimage
18+
PATHS
19+
$ENV{FI_HOME}/lib/$ENV{PROCESSOR_ARCHITECTURE}
20+
${FREEIMAGE_ROOT_DIR}/lib
21+
${FREEIMAGE_ROOT_DIR}
22+
DOC "The FreeImage library")
2323
ELSE (WIN32)
24-
FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h
25-
/usr/include
26-
/usr/local/include
27-
/sw/include
28-
/opt/local/include
29-
DOC "The directory where FreeImage.h resides")
30-
FIND_LIBRARY( FREEIMAGE_LIBRARY
31-
NAMES FreeImage freeimage
32-
PATHS
33-
/usr/lib64
34-
/usr/lib
35-
/usr/local/lib64
36-
/usr/local/lib
37-
/sw/lib
38-
/opt/local/lib
39-
DOC "The FreeImage library")
24+
FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h
25+
/usr/include
26+
/usr/local/include
27+
/sw/include
28+
/opt/local/include
29+
DOC "The directory where FreeImage.h resides")
30+
FIND_LIBRARY( FREEIMAGE_LIBRARY
31+
NAMES FreeImage freeimage
32+
PATHS
33+
/usr/lib64
34+
/usr/lib
35+
/usr/local/lib64
36+
/usr/local/lib
37+
/sw/lib
38+
/opt/local/lib
39+
DOC "The FreeImage library")
4040
ENDIF (WIN32)
4141

4242
SET(FREEIMAGE_LIBRARIES ${FREEIMAGE_LIBRARY})
4343

4444
IF (FREEIMAGE_INCLUDE_PATH AND FREEIMAGE_LIBRARY)
45-
SET( FREEIMAGE_FOUND TRUE CACHE BOOL "Set to TRUE if FreeImage is found, FALSE otherwise")
45+
SET( FREEIMAGE_FOUND TRUE CACHE BOOL "Set to TRUE if FreeImage is found, FALSE otherwise")
4646
ELSE (FREEIMAGE_INCLUDE_PATH AND FREEIMAGE_LIBRARY)
47-
SET( FREEIMAGE_FOUND FALSE CACHE BOOL "Set to TRUE if FreeImage is found, FALSE otherwise")
47+
SET( FREEIMAGE_FOUND FALSE CACHE BOOL "Set to TRUE if FreeImage is found, FALSE otherwise")
4848
ENDIF (FREEIMAGE_INCLUDE_PATH AND FREEIMAGE_LIBRARY)
4949

5050
MARK_AS_ADVANCED(
51-
FREEIMAGE_FOUND
52-
FREEIMAGE_LIBRARY
53-
FREEIMAGE_LIBRARIES
54-
FREEIMAGE_INCLUDE_PATH)
51+
FREEIMAGE_FOUND
52+
FREEIMAGE_LIBRARY
53+
FREEIMAGE_LIBRARIES
54+
FREEIMAGE_INCLUDE_PATH)
5555

0 commit comments

Comments
 (0)