pictw_t * simg_load(session_t *ps, const char *path, enum pict_posp_mode mode, int twidth, int theight, enum align alg, enum align valg, const XRenderColor *pc) { pictw_t *result = NULL; bool processed = false; if (!path || !path[0]) { } #ifdef CFG_LIBPNG else if (str_endwith(path, ".png")) result = spng_read(ps, path); #endif #ifdef CFG_JPEG else if (str_endwith(path, ".jpg") || str_endwith(path, ".jpeg") || str_endwith(path, ".jpe")) result = sjpg_read(ps, path); #endif #ifdef CFG_GIFLIB else if (str_endwith(path, ".gif")) result = sgif_read(ps, path); #endif if (!processed) result = simg_postprocess(ps, result, mode, twidth, theight, alg, valg, pc); return result; }
void CfsclientwDlg::OnBnClickedButdw() { CListCtrl* pl = (CListCtrl*)GetDlgItem(IDC_FLIST); file_info fi; vector<file_info> vfiles; char buf[MAX_PATH]; for (int i = 0; i < pl->GetItemCount(); i++) { if (pl->GetCheck(i) == 0) { continue; } pl->GetItemText(i, IDX_FILENAME, buf, sizeof(buf)); if (strcmp(buf, "..") == 0) { continue; } fi.basename = buf; pl->GetItemText(i, IDX_FULLNAME, buf, sizeof(buf)); fi.filename = buf; pl->GetItemText(i, IDX_FILEINFO, buf, sizeof(buf)); fi.isFolder = !strcmp(buf, "<enter>"); pl->GetItemText(i, IDX_FILESIZE, buf, sizeof(buf)); fi.filesize = str_i64(buf); vfiles.push_back(fi); } if (vfiles.size()) { m_dwWin.setDwFiles(vfiles); m_dwWin.DoModal(); return; } CEdit* pe = (CEdit*)GetDlgItem(IDC_EDIT_FILE); char filename[256]; pe->GetWindowText(filename, sizeof(filename)); if (filename[0] == 0) { MessageBox("Please select or input a file name", "no file name"); return; } if (filename[0] == '/' && filename[1] == 0) { MessageBox("Are your sure? you cannot download root directory", "wrong path"); return; } //regular file if (!str_endwith(filename, '/')) { file_info fi; //nameConvert(filename, fi); fi.filesize = m_dwM->getFileSize(filename); if (fi.filesize < 0) { MessageBox("404 file not found", "error"); return; } if (fi.filesize < 10) { MessageBox("I refuse to download file < 10 bytes", "error"); return; } fi.filename = filename; char* pt = strrchr(filename, '/'); if (pt) { fi.basename = pt + 1; } else { fi.basename = filename; } vfiles.push_back(fi); m_dwWin.setDwFiles(vfiles); } else //this is a folder, list files, give files and folder name to dw-win { size_t len = strlen(filename); filename[len - 1] = 0; m_dwM->dir(vfiles, filename); if (vfiles.size() == 0) { MessageBox("no files need to download", "error"); return; } char* pt = strrchr(filename, '/'); if (pt) { m_dwWin.setDwFiles(vfiles, pt + 1); } else { m_dwWin.setDwFiles(vfiles, filename); } } m_dwWin.DoModal(); }