99 #include <magick/MagickCore.h>
1010#endif
1111
12- bool ffLogoPrintSixelImpl (FFinstance * instance , void * imageMagick , FFLogoIMResizeFunc resizeFunc , FFLogoIMWriteFunc writeFunc )
12+ FFLogoSixelResult ffLogoPrintSixelImpl (FFinstance * instance , void * imageMagick , FFLogoIMResizeFunc resizeFunc , FFLogoIMWriteFunc writeFunc )
1313{
1414 struct winsize winsize ;
1515 if (ioctl (STDOUT_FILENO , TIOCGWINSZ , & winsize ) != 0 )
16- return false ;
16+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
1717
18- FF_LIBRARY_LOAD_SYMBOL (imageMagick , AcquireExceptionInfo , false )
19- FF_LIBRARY_LOAD_SYMBOL (imageMagick , DestroyExceptionInfo , false )
20- FF_LIBRARY_LOAD_SYMBOL (imageMagick , AcquireImageInfo , false )
21- FF_LIBRARY_LOAD_SYMBOL (imageMagick , DestroyImageInfo , false )
22- FF_LIBRARY_LOAD_SYMBOL (imageMagick , CopyMagickString , false )
23- FF_LIBRARY_LOAD_SYMBOL (imageMagick , ReadImage , false )
24- FF_LIBRARY_LOAD_SYMBOL (imageMagick , DestroyImage , false )
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 )
2525
2626 ExceptionInfo * exceptionInfo = ffAcquireExceptionInfo ();
2727 if (exceptionInfo == NULL )
2828 {
2929 dlclose (imageMagick );
30- return false ;
30+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
3131 }
3232
3333 ImageInfo * imageInfoIn = ffAcquireImageInfo ();
3434 if (imageInfoIn == NULL )
3535 {
3636 ffDestroyExceptionInfo (exceptionInfo );
3737 dlclose (imageMagick );
38- return false ;
38+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
3939 }
4040
4141 //+1, because we need to copy the null byte too
@@ -47,7 +47,7 @@ bool ffLogoPrintSixelImpl(FFinstance* instance, void* imageMagick, FFLogoIMResiz
4747 {
4848 ffDestroyExceptionInfo (exceptionInfo );
4949 dlclose (imageMagick );
50- return false ;
50+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
5151 }
5252
5353 double characterPixelWidth = winsize .ws_xpixel / (double ) winsize .ws_col ;
@@ -62,7 +62,7 @@ bool ffLogoPrintSixelImpl(FFinstance* instance, void* imageMagick, FFLogoIMResiz
6262 ffDestroyImage (originalImage );
6363 ffDestroyExceptionInfo (exceptionInfo );
6464 dlclose (imageMagick );
65- return false ;
65+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
6666 }
6767
6868 Image * resizedImage = (Image * ) resizeFunc (originalImage , (size_t ) imagePixelWidth , (size_t ) imagePixelHeight , exceptionInfo );
@@ -71,7 +71,7 @@ bool ffLogoPrintSixelImpl(FFinstance* instance, void* imageMagick, FFLogoIMResiz
7171 {
7272 ffDestroyExceptionInfo (exceptionInfo );
7373 dlclose (imageMagick );
74- return false ;
74+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
7575 }
7676
7777 ImageInfo * imageInfoOut = ffAcquireImageInfo ();
@@ -80,7 +80,7 @@ bool ffLogoPrintSixelImpl(FFinstance* instance, void* imageMagick, FFLogoIMResiz
8080 ffDestroyImage (resizedImage );
8181 ffDestroyExceptionInfo (exceptionInfo );
8282 dlclose (imageMagick );
83- return false ;
83+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
8484 }
8585
8686 ffPrintCharTimes (' ' , instance -> config .logoPaddingLeft );
@@ -96,32 +96,34 @@ bool ffLogoPrintSixelImpl(FFinstance* instance, void* imageMagick, FFLogoIMResiz
9696 dlclose (imageMagick );
9797
9898 if (writeResult == MagickFalse )
99- return false ;
99+ return FF_LOGO_SIXEL_RESULT_RUN_ERROR ;
100100
101101 instance -> state .logoHeight = (uint32_t ) (imagePixelHeight / characterPixelHeight );
102102 instance -> state .logoWidth = instance -> config .logoWidth + instance -> config .logoPaddingLeft + instance -> config .logoPaddingRight ;
103103
104104 fputs ("\033[9999999D" , stdout );
105105 printf ("\033[%uA" , instance -> state .logoHeight );
106106
107- return true ;
107+ return FF_LOGO_SIXEL_RESULT_SUCCESS ;
108108}
109109#endif
110110
111111bool ffLogoPrintSixelIfExists (FFinstance * instance )
112112{
113- #ifdef FF_HAVE_IMAGEMAGICK7
114- if (ffLogoPrintSixelIM7 (instance ))
115- return true;
113+ #if !defined(FF_HAVE_IMAGEMAGICK7 ) && !defined(FF_HAVE_IMAGEMAGICK6 )
114+ FF_UNUSED (instance );
116115 #endif
117116
118- #ifdef FF_HAVE_IMAGEMAGICK6
119- if (ffLogoPrintSixelIM6 (instance ))
117+ #ifdef FF_HAVE_IMAGEMAGICK7
118+ FFLogoSixelResult result = ffLogoPrintSixelIM7 (instance );
119+ if (result == FF_LOGO_SIXEL_RESULT_SUCCESS )
120120 return true;
121+ else if (result == FF_LOGO_SIXEL_RESULT_RUN_ERROR )
122+ return false;
121123 #endif
122124
123- #if !defined( FF_HAVE_IMAGEMAGICK7 ) && !defined( FF_HAVE_IMAGEMAGICK6 )
124- FF_UNUSED (instance );
125+ #ifdef FF_HAVE_IMAGEMAGICK6
126+ return ffLogoPrintSixelIM6 (instance ) == FF_LOGO_SIXEL_RESULT_SUCCESS
125127 #endif
126128
127129 return false;
0 commit comments