int ExtensionIsPicture(wxString *extension) { if ( extension->Length()<=2 ) { return 0; //No way it is a picture extension :P } unsigned int is_a_picture=0; if ( extension->CmpNoCase(wxT("PNG"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("PNM"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("BMP"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("GIF"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("PCX"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("XPM"))==0 ) { is_a_picture=1; } else if ( extension->CmpNoCase(wxT("TIF"))==0 ) { is_a_picture=1; } if ( ExtensionIsJPEGPicture(extension) ) { is_a_picture=1; } return is_a_picture; }
int AddFileIfItIsAPicture(char *thedirectory,char *subdir,wxString *filename,unsigned int count_only) { if (filename->Length()<=4) { fprintf(stderr,"Filenames must be bigger than .jpg for example\n"); return 0; } //char filename_str[1024]; //strncpy(filename_str,(const char*) filename->mb_str(wxConvUTF8),1024); //fprintf(stderr,"AddFileIfItIsAPicture called for %s , %s , %s \n",thedirectory,subdir,filename_str); wxString dir_and_filename; dir_and_filename.clear(); dir_and_filename<<_U2(thedirectory); if (thedirectory[strlen(thedirectory)-1]!='/') { dir_and_filename<<_U2("/"); } dir_and_filename<<*filename; wxFileName fname(dir_and_filename); wxString extension=fname.GetExt(); wxString fullname =fname.GetFullName(); if (!fname.FileExists( )) { fprintf(stderr,"Not a file ..!\n"); } else // if (fname.DirExists( )) { fprintf(stderr," Not a directory ..!\n"); } // else if ( ExtensionIsPicture(&extension) ) { if (!count_only) { if ( pictures_count >= list_size ) { /*Our list cannot acommodate any more data error*/ return 0; } strncpy(list[pictures_count].filename,(const char*) fullname.mb_str(wxConvUTF8),256); if (subdir==0) { strncpy(list[pictures_count].subdir,"\0",1024); } else { strncpy(list[pictures_count].subdir,subdir,1024); } wxDateTime mod_time=fname.GetModificationTime(); list[pictures_count].year=mod_time.GetYear(); list[pictures_count].month=mod_time.GetMonth(); list[pictures_count].day=mod_time.GetDay(); list[pictures_count].day_of_year=mod_time.GetDayOfYear(); list[pictures_count].hour=mod_time.GetHour(); list[pictures_count].minute=mod_time.GetMinute(); list[pictures_count].second=mod_time.GetSecond(); if (ExtensionIsJPEGPicture(&extension)) { list[pictures_count].is_jpeg=1; } else { list[pictures_count].is_jpeg=0; } wxULongLong size_long_long = fname.GetSize(); list[pictures_count].filesize=(unsigned int) size_long_long.ToULong(); ++pictures_count; } return 1; } return 0; }