Skip to content

Commit 703ec59

Browse files
Improved ImageMagick detection
1 parent 3b13141 commit 703ec59

File tree

5 files changed

+41
-29
lines changed

5 files changed

+41
-29
lines changed

CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,15 @@ endif()
275275

276276
if(ENABLE_IMAGEMAGICK7)
277277
pkg_check_modules(IMAGEMAGICK7 MagickCore-7.Q16HDRI)
278+
if(NOT IMAGEMAGICK7_FOUND)
279+
pkg_check_modules(IMAGEMAGICK7 /usr/lib/imagemagick7/pkgconfig/MagickCore-7.Q16HDRI.pc)
280+
endif()
278281
if(NOT IMAGEMAGICK7_FOUND)
279282
pkg_check_modules(IMAGEMAGICK7 MagickCore-7.Q16)
280283
endif()
284+
if(NOT IMAGEMAGICK7_FOUND)
285+
pkg_check_modules(IMAGEMAGICK7 /usr/lib/imagemagick7/pkgconfig/MagickCore-7.Q16.pc)
286+
endif()
281287

282288
if(IMAGEMAGICK7_FOUND)
283289
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_IMAGEMAGICK7=1)
@@ -288,9 +294,15 @@ endif()
288294

289295
if(ENABLE_IMAGEMAGICK6)
290296
pkg_check_modules(IMAGEMAGICK6 MagickCore-6.Q16HDRI)
297+
if(NOT IMAGEMAGICK6_FOUND)
298+
pkg_check_modules(IMAGEMAGICK6 /usr/lib/imagemagick6/pkgconfig/MagickCore-6.Q16HDRI.pc)
299+
endif()
291300
if(NOT IMAGEMAGICK6_FOUND)
292301
pkg_check_modules(IMAGEMAGICK6 MagickCore-6.Q16)
293302
endif()
303+
if(NOT IMAGEMAGICK6_FOUND)
304+
pkg_check_modules(IMAGEMAGICK6 /usr/lib/imagemagick6/pkgconfig/MagickCore-6.Q16.pc)
305+
endif()
294306

295307
if(IMAGEMAGICK6_FOUND)
296308
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_IMAGEMAGICK6=1)

src/logo/image/im6.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ static void* logoResize(const void* image, size_t width, size_t height, void* ex
1212

1313
FFLogoImageResult ffLogoPrintImageIM6(FFinstance* instance, FFLogoType type)
1414
{
15-
FF_LIBRARY_LOAD(imageMagick, instance->config.libImageMagick, FF_LOGO_SIXEL_RESULT_INIT_ERROR, "libMagickCore-6.Q16HDRI.so", 8, "libMagickCore-6.Q16.so", 8)
16-
FF_LIBRARY_LOAD_SYMBOL_ADRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_SIXEL_RESULT_INIT_ERROR);
15+
FF_LIBRARY_LOAD(imageMagick, instance->config.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR, "libMagickCore-6.Q16HDRI.so", 8, "libMagickCore-6.Q16.so", 8)
16+
FF_LIBRARY_LOAD_SYMBOL_ADRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR);
1717
return ffLogoPrintImageImpl(instance, imageMagick, logoResize, type);
1818
}
1919

src/logo/image/im7.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ static void* logoResize(const void* image, size_t width, size_t height, void* ex
1212

1313
FFLogoImageResult ffLogoPrintImageIM7(FFinstance* instance, FFLogoType type)
1414
{
15-
FF_LIBRARY_LOAD(imageMagick, instance->config.libImageMagick, FF_LOGO_SIXEL_RESULT_INIT_ERROR, "libMagickCore-7.Q16HDRI.so", 11, "libMagickCore-7.Q16.so", 11)
16-
FF_LIBRARY_LOAD_SYMBOL_ADRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_SIXEL_RESULT_INIT_ERROR);
15+
FF_LIBRARY_LOAD(imageMagick, instance->config.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR, "libMagickCore-7.Q16HDRI.so", 11, "libMagickCore-7.Q16.so", 11)
16+
FF_LIBRARY_LOAD_SYMBOL_ADRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR);
1717
return ffLogoPrintImageImpl(instance, imageMagick, logoResize, type);
1818
}
1919

src/logo/image/image.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
1313
{
1414
struct winsize winsize;
1515
if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != 0)
16-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
17-
18-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, AcquireExceptionInfo, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
19-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyExceptionInfo, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
20-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, AcquireImageInfo, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
21-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyImageInfo, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
22-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, CopyMagickString, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
23-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, ReadImage, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
24-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyImage, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
25-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, ImageToBlob, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
26-
FF_LIBRARY_LOAD_SYMBOL(imageMagick, Base64Encode, FF_LOGO_SIXEL_RESULT_INIT_ERROR)
16+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
17+
18+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, AcquireExceptionInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
19+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyExceptionInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
20+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, AcquireImageInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
21+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyImageInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
22+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, CopyMagickString, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
23+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, ReadImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
24+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, DestroyImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
25+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, ImageToBlob, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
26+
FF_LIBRARY_LOAD_SYMBOL(imageMagick, Base64Encode, FF_LOGO_IMAGE_RESULT_INIT_ERROR)
2727

2828
ExceptionInfo* exceptionInfo = ffAcquireExceptionInfo();
2929
if(exceptionInfo == NULL)
3030
{
3131
dlclose(imageMagick);
32-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
32+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
3333
}
3434

3535
ImageInfo* imageInfoIn = ffAcquireImageInfo();
3636
if(imageInfoIn == NULL)
3737
{
3838
ffDestroyExceptionInfo(exceptionInfo);
3939
dlclose(imageMagick);
40-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
40+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
4141
}
4242

4343
//+1, because we need to copy the null byte too
@@ -49,7 +49,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
4949
{
5050
ffDestroyExceptionInfo(exceptionInfo);
5151
dlclose(imageMagick);
52-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
52+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
5353
}
5454

5555
double characterPixelWidth = winsize.ws_xpixel / (double) winsize.ws_col;
@@ -64,7 +64,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
6464
ffDestroyImage(originalImage);
6565
ffDestroyExceptionInfo(exceptionInfo);
6666
dlclose(imageMagick);
67-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
67+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
6868
}
6969

7070
Image* resizedImage = (Image*) resizeFunc(originalImage, (size_t) imagePixelWidth, (size_t) imagePixelHeight, exceptionInfo);
@@ -73,7 +73,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
7373
{
7474
ffDestroyExceptionInfo(exceptionInfo);
7575
dlclose(imageMagick);
76-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
76+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
7777
}
7878

7979
ImageInfo* imageInfoOut = ffAcquireImageInfo();
@@ -82,7 +82,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
8282
ffDestroyImage(resizedImage);
8383
ffDestroyExceptionInfo(exceptionInfo);
8484
dlclose(imageMagick);
85-
return FF_LOGO_SIXEL_RESULT_RUN_ERROR;
85+
return FF_LOGO_IMAGE_RESULT_RUN_ERROR;
8686
}
8787

8888
if(type == FF_LOGO_TYPE_SIXEL)
@@ -123,7 +123,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, void* imageMagick,
123123
fputs("\033[9999999D", stdout);
124124
printf("\033[%uA", instance->state.logoHeight);
125125

126-
return FF_LOGO_SIXEL_RESULT_SUCCESS;
126+
return FF_LOGO_IMAGE_RESULT_SUCCESS;
127127
}
128128

129129
#endif
@@ -136,14 +136,14 @@ bool ffLogoPrintImageIfExists(FFinstance* instance, FFLogoType type)
136136

137137
#ifdef FF_HAVE_IMAGEMAGICK7
138138
FFLogoImageResult result = ffLogoPrintImageIM7(instance, type);
139-
if(result == FF_LOGO_SIXEL_RESULT_SUCCESS)
139+
if(result == FF_LOGO_IMAGE_RESULT_SUCCESS)
140140
return true;
141-
else if(result == FF_LOGO_SIXEL_RESULT_RUN_ERROR)
141+
else if(result == FF_LOGO_IMAGE_RESULT_RUN_ERROR)
142142
return false;
143143
#endif
144144

145145
#ifdef FF_HAVE_IMAGEMAGICK6
146-
return ffLogoPrintImageIM6(instance, type) == FF_LOGO_SIXEL_RESULT_SUCCESS;
146+
return ffLogoPrintImageIM6(instance, type) == FF_LOGO_IMAGE_RESULT_SUCCESS;
147147
#endif
148148

149149
return false;

src/logo/image/image.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
typedef enum FFLogoImageResult
1717
{
18-
FF_LOGO_SIXEL_RESULT_SUCCESS, //Logo printed
19-
FF_LOGO_SIXEL_RESULT_INIT_ERROR, //Failed to load library, try again with next IM version
20-
FF_LOGO_SIXEL_RESULT_RUN_ERROR //Failed to load / convert image, cancle whole sixel code
18+
FF_LOGO_IMAGE_RESULT_SUCCESS, //Logo printed
19+
FF_LOGO_IMAGE_RESULT_INIT_ERROR, //Failed to load library, try again with next IM version
20+
FF_LOGO_IMAGE_RESULT_RUN_ERROR //Failed to load / convert image, cancle whole sixel code
2121
} FFLogoImageResult;
2222

2323
typedef void*(*FFLogoIMResizeFunc)(const void* image, size_t width, size_t height, void* exceptionInfo);
@@ -32,7 +32,7 @@ FFLogoImageResult ffLogoPrintImageIM7(FFinstance* instance, FFLogoType type);
3232

3333
#ifdef FF_HAVE_IMAGEMAGICK6
3434
#include <math.h>
35-
FFLogoSixelResult ffLogoPrintImageIM6(FFinstance* instance, FFLogoType type);
35+
FFLogoImageResult ffLogoPrintImageIM6(FFinstance* instance, FFLogoType type);
3636
#endif
3737

3838

0 commit comments

Comments
 (0)