@@ -2982,3 +2982,79 @@ on_file_reload_current(eu_tabpage *pnode)
29822982 }
29832983 }
29842984}
2985+
2986+ void
2987+ on_file_convert_array (const eu_tabpage * pnode )
2988+ {
2989+ sptr_t len = on_sci_call (pnode , SCI_GETLENGTH , 0 , 0 );
2990+ if (len > BUFF_32M )
2991+ {
2992+ MSG_BOX (IDC_MSG_MEM_NOT_AVAIL , IDC_MSG_ERROR , MB_ICONERROR |MB_OK );
2993+ }
2994+ else if (pnode -> phex && pnode -> phex -> pbase && pnode -> phex -> total_items > 0 && _tcslen (pnode -> filename ) > 0 )
2995+ {
2996+ TCHAR full_path [MAX_BUFFER ] = {'f' ,'o' ,'o' ,'.' ,'c' ,'\0' };
2997+ if (on_file_get_filename_dlg (full_path , _countof (full_path ), pnode -> pathname ) == SKYLARK_OK && _tcslen (full_path ) > 0 )
2998+ {
2999+ char * path = NULL ;
3000+ FILE * fp = _tfopen (full_path , _T ("wb" ));
3001+ if (fp && (path = eu_utf16_utf8 (pnode -> filename , NULL )) != NULL )
3002+ {
3003+ size_t i = 0 ;
3004+ char desc [MAX_BUFFER ] = {0 };
3005+ const char * tail = "};\n" ;
3006+ const char * header = "/* created by skylark editor from file %s */\nstatic const unsigned char %s[%zu] = {\n" ;
3007+ _snprintf (desc , MAX_BUFFER - 1 , header , path , "generate_resource" , pnode -> phex -> total_items );
3008+ free (path );
3009+ fwrite (desc , 1 , strlen (desc ), fp );
3010+ for (i = 0 ; i < pnode -> phex -> total_items ; ++ i )
3011+ {
3012+ if (i == pnode -> phex -> total_items - 1 )
3013+ {
3014+ if (!(i % 16 ))
3015+ {
3016+ fwrite (" " , 1 , 2 , fp );
3017+ }
3018+ sprintf (desc , "0x%02X" , pnode -> phex -> pbase [i ]);
3019+ fwrite (desc , 1 , strlen (desc ), fp );
3020+ fwrite ("\n" , 1 , 1 , fp );
3021+ }
3022+ else
3023+ {
3024+ if (!(i % 16 ))
3025+ {
3026+ fwrite (" " , 1 , 2 , fp );
3027+ sprintf (desc , "0x%02X" , pnode -> phex -> pbase [i ]);
3028+ fwrite (desc , 1 , strlen (desc ), fp );
3029+ fwrite (", " , 1 , 2 , fp );
3030+ }
3031+ else if ((i % 16 ) == 15 )
3032+ {
3033+ sprintf (desc , "0x%02X" , pnode -> phex -> pbase [i ]);
3034+ fwrite (desc , 1 , strlen (desc ), fp );
3035+ if (i == pnode -> phex -> total_items - 1 )
3036+ {
3037+ fwrite ("\n" , 1 , 1 , fp );
3038+ }
3039+ else
3040+ {
3041+ fwrite (",\n" , 1 , 2 , fp );
3042+ }
3043+ }
3044+ else
3045+ {
3046+ sprintf (desc , "0x%02X" , pnode -> phex -> pbase [i ]);
3047+ fwrite (desc , 1 , strlen (desc ), fp );
3048+ fwrite (", " , 1 , 2 , fp );
3049+ }
3050+ }
3051+ }
3052+ fwrite (tail , 1 , strlen (tail ), fp );
3053+ }
3054+ if (fp )
3055+ {
3056+ fclose (fp );
3057+ }
3058+ }
3059+ }
3060+ }
0 commit comments