XFILE::CFile *CXBMCTestUtils::CreateTempFile(std::string const& suffix) { CTempFile *f = new CTempFile(); if (f->Create(suffix)) return f; delete f; return NULL; }
bool CXBMCTestUtils::DeleteTempFile(XFILE::CFile *tempfile) { if (!tempfile) return true; CTempFile *f = static_cast<CTempFile*>(tempfile); bool retval = f->Delete(); delete f; return retval; }
bool CGattooImg::saveToSD() { if (m_Img.empty()) return true; IImgConverter* pConverter = createImgConverter(IImgConverter::enDefault); cv::cvtColor(m_Img, m_Img, CV_RGB2GRAY); CTempFile tmpFile; tmpFile.Create(); pConverter->Convert(m_Img, tmpFile); if (0x8000 & GetKeyState(VK_SHIFT)) { pConverter->CreateBitmap(tmpFile.getName()); } cv::cvtColor(m_Img, m_Img, CV_GRAY2RGB); std::string strDrive; getDriveToSave(strDrive); if (0 == strDrive.size()) return false; SWriteProgressData data; data.chDrive = strDrive.c_str()[0]; data.szFilePath = tmpFile.getName(); CUPDialog progress(AfxGetMainWnd()->GetSafeHwnd(), ThreadProc, (LPVOID)&data); progress.SetDialogTemplate(nullptr, MAKEINTRESOURCE(IDD_DIALOG_SAVE_PROGRESS), IDC_STATIC_PROGRESS, IDC_PROGRESS, IDC_BUTTON_CANCEL); if (IDOK == progress.DoModal()) MessageBox(AfxGetMainWnd()->GetSafeHwnd(), _T("Image was saved to SD card successfully."), _T("Information"), MB_OK|MB_ICONINFORMATION); else MessageBox(AfxGetMainWnd()->GetSafeHwnd(), _T("Image saving to SD card was interrupted."), _T("Warning"), MB_OK|MB_ICONEXCLAMATION); pConverter->Destroy(); return true; }
bool SaveAdminList(COutStream& stream) { std::string data; data.reserve(1 << 12); // 4kb for (auto itr = admin::adminList.cbegin(); itr != admin::adminList.cend(); ++itr) { data += itr->second.name + ","; data += itr->second.hash + ","; data += m_sprintf("%i\r\n", itr->second.accessLevel.get_level()); } std::wstring adminPathTmp = adminPath + L".tmp"; CTempFile<COutFile> file; if (!file.Open(adminPathTmp, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, OPEN_ALWAYS)) { stream << L"can't open admin file : " << adminPath << endl; return false; } DWORD written; if (!file.Write((BYTE*)data.c_str(), data.size(), &written)) { stream << "can't write to new admin file" << endl; return false; } file.Close(); if (!CFile::Move(adminPathTmp, adminPath, true)) { stream << "can't replace old admin file " << adminPath << endl; return false; } file.success(); return true; }