int64 MediaBlockMapReader::ReadFramesAt(void* buffer, int64 start, int64 frameCount) { if (start < 0) return 0; SeekToFrame(start); return ReadFrames(buffer, frameCount); }
bool CMatchingDlg::SelectFrame(int *frame_id) { m_FrameID = 0; gtk_widget_hide(m_UseFrame); ReadFrames(true, *frame_id); SetSelectMode(REFERENCE_FRAME); SetSortMode(m_FrameSort); UpdatePreview(true); UpdateControls(); if (gtk_dialog_run(GTK_DIALOG(m_pDlg))==GTK_RESPONSE_ACCEPT) { g_Project->SetInt("MatchingDlg", "Frame", m_FrameID); *frame_id = m_FrameID; return true; } return false; }
status_t BMediaTrack::ReadFrames(void* buffer, int64* _frameCount, media_header* mediaHeader) { return ReadFrames(buffer, _frameCount, mediaHeader, NULL); }
void CMatchingDlg::Execute(void) { int res; char msg[256]; m_FrameID = 0; g_free(m_CatFile); m_CatFile = NULL; g_free(m_SelectionName); m_SelectionName = NULL; m_FileList = NULL; // Restore path to catalog files gchar *fpath = CConfig::GetStr("MakeCatDlg", "Folder", NULL); if (fpath && *fpath!='\0' && g_file_test(fpath, G_FILE_TEST_IS_DIR)) gtk_entry_set_text(GTK_ENTRY(m_PathEntry), fpath); else { gchar *defpath = g_build_filename(get_user_data_dir(), "Catalog files", NULL); if (force_directory(defpath)) gtk_entry_set_text(GTK_ENTRY(m_PathEntry), defpath); g_free(defpath); } g_free(fpath); // Update list of frames ReadFrames(false, g_Project->GetInt("MatchingDlg", "Frame", 0)); // Update list of catalog files gchar *path = g_Project->GetStr("MatchingDlg", "File", NULL); if (!path) path = CConfig::GetStr("MatchingDlg", "File", NULL); ReadCatalogs(path); g_free(path); gtk_widget_show(m_UseFrame); // Check inputs if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(m_Frames), NULL)==0) { ShowError(m_pParent, "There are no frames usable as a reference frame."); return; } // Select reference frame or the first frame SetSelectMode(m_SelectMode); SetSortMode(m_FrameSort); UpdatePreview(true); UpdateControls(); if (gtk_dialog_run(GTK_DIALOG(m_pDlg))!=GTK_RESPONSE_ACCEPT) return; gtk_widget_hide(m_pDlg); g_Project->SetInt("MatchingDlg", "Select", m_SelectMode); if (m_SelectMode == REFERENCE_FRAME) g_Project->SetInt("MatchingDlg", "Frame", m_FrameID); else { g_Project->SetStr("MatchingDlg", "File", m_CatFile); CConfig::SetStr("MatchingDlg", "File", m_CatFile); } g_Project->ClearReference(); // Always all files gtk_tree_model_foreach(g_Project->FileList(), GtkTreeModelForeachFunc(make_list), &m_FileList); CProgressDlg pDlg(m_pParent, "Matching photometry files"); pDlg.SetMinMax(0, g_list_length(m_FileList)); res = pDlg.Execute(ExecuteProc, this); if (res!=0) { char *msg = cmpack_formaterror(res); ShowError(m_pParent, msg, true); cmpack_free(msg); } else if (m_OutFiles==0) { ShowError(m_pParent, "No file was successfully processed.", true); } else if (m_OutFiles!=m_InFiles) { sprintf(msg, "%d file(s) were successfully processed, %d file(s) failed.", m_OutFiles, m_InFiles-m_OutFiles); ShowWarning(m_pParent, msg, true); } else { sprintf(msg, "All %d file(s) were successfully processed.", m_OutFiles); ShowInformation(m_pParent, msg, true); } // Free allocated memory g_list_foreach(m_FileList, (GFunc)gtk_tree_row_reference_free, NULL); g_list_free(m_FileList); m_FileList = NULL; g_free(m_CatFile); m_CatFile = NULL; g_free(m_SelectionName); m_SelectionName = NULL; }