本文整理汇总了C++中FileSystem::extract_dir方法的典型用法代码示例。如果您正苦于以下问题:C++ FileSystem::extract_dir方法的具体用法?C++ FileSystem::extract_dir怎么用?C++ FileSystem::extract_dir使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileSystem
的用法示例。
在下文中一共展示了FileSystem::extract_dir方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: write
int Asset::write(FileXML *file,
int include_index,
const char *output_path)
{
char new_path[BCTEXTLEN];
char asset_directory[BCTEXTLEN];
char output_directory[BCTEXTLEN];
FileSystem fs;
// Make path relative
fs.extract_dir(asset_directory, path);
if(output_path && output_path[0])
fs.extract_dir(output_directory, output_path);
else
output_directory[0] = 0;
// Asset and EDL are in same directory. Extract just the name.
if(!strcmp(asset_directory, output_directory))
{
fs.extract_name(new_path, path);
}
else
{
strcpy(new_path, path);
}
file->tag.set_title("ASSET");
file->tag.set_property("SRC", new_path);
file->append_tag();
file->append_newline();
file->tag.set_title("FOLDER");
file->tag.set_property("NUMBER", awindow_folder);
file->append_tag();
file->tag.set_title("/FOLDER");
file->append_tag();
file->append_newline();
// Write the format information
file->tag.set_title("FORMAT");
file->tag.set_property("TYPE",
File::formattostr(format));
file->tag.set_property("USE_HEADER", use_header);
file->append_tag();
file->tag.set_title("/FORMAT");
file->append_tag();
file->append_newline();
// Requiring data to exist caused batch render to lose settings.
// But the only way to know if an asset doesn't have audio or video data
// is to not write the block.
// So change the block name if the asset doesn't have the data.
/* if(audio_data) */ write_audio(file);
/* if(video_data) */ write_video(file);
if(index_status == 0 && include_index) write_index(file); // index goes after source
file->tag.set_title("/ASSET");
file->append_tag();
file->append_newline();
return 0;
}
示例2: copy
int Edit::copy(int64_t start,
int64_t end,
FileXML *file,
const char *output_path)
{
// variables
//printf("Edit::copy 1\n");
int64_t endproject = startproject + length;
int result;
if((startproject >= start && startproject <= end) || // startproject in range
(endproject <= end && endproject >= start) || // endproject in range
(startproject <= start && endproject >= end)) // range in project
{
// edit is in range
int64_t startproject_in_selection = startproject; // start of edit in selection in project
int64_t startsource_in_selection = startsource; // start of source in selection in source
int64_t endsource_in_selection = startsource + length; // end of source in selection
int64_t length_in_selection = length; // length of edit in selection
//printf("Edit::copy 2\n");
if(startproject < start)
{ // start is after start of edit in project
int64_t length_difference = start - startproject;
startsource_in_selection += length_difference;
startproject_in_selection += length_difference;
length_in_selection -= length_difference;
}
//printf("Edit::copy 3\n");
if(endproject > end)
{ // end is before end of edit in project
length_in_selection = end - startproject_in_selection;
}
//printf("Edit::copy 4\n");
if(file) // only if not counting
{
file->tag.set_title("EDIT");
file->tag.set_property("STARTSOURCE", startsource_in_selection);
file->tag.set_property("CHANNEL", (int64_t)channel);
file->tag.set_property("LENGTH", length_in_selection);
if(user_title[0]) file->tag.set_property("USER_TITLE", user_title);
//printf("Edit::copy 5\n");
copy_properties_derived(file, length_in_selection);
file->append_tag();
// file->append_newline();
//printf("Edit::copy 6\n");
if(nested_edl)
{
file->tag.set_title("NESTED_EDL");
file->tag.set_property("SRC", nested_edl->path);
file->append_tag();
}
if(asset)
{
//printf("Edit::copy 6 %s\n", asset->path);
char stored_path[BCTEXTLEN];
char asset_directory[BCTEXTLEN];
char output_directory[BCTEXTLEN];
FileSystem fs;
//printf("Edit::copy 6 %s\n", asset->path);
fs.extract_dir(asset_directory, asset->path);
//printf("Edit::copy 6 %s\n", asset->path);
if(output_path)
fs.extract_dir(output_directory, output_path);
else
output_directory[0] = 0;
//printf("Edit::copy %s, %s %s, %s\n", asset->path, asset_directory, output_path, output_directory);
if(output_path && !strcmp(asset_directory, output_directory))
fs.extract_name(stored_path, asset->path);
else
strcpy(stored_path, asset->path);
file->tag.set_title("FILE");
file->tag.set_property("SRC", stored_path);
file->append_tag();
}
if(transition)
{
transition->save_xml(file);
}
//printf("Edit::copy 7\n");
file->tag.set_title("/EDIT");
file->append_tag();
file->append_newline();
//printf("Edit::copy 8\n");
}
//printf("Edit::copy 9\n");
//.........这里部分代码省略.........
示例3: read
int Asset::read(FileXML *file,
int expand_relative)
{
int result = 0;
// Check for relative path.
if(expand_relative)
{
char new_path[BCTEXTLEN];
char asset_directory[BCTEXTLEN];
char input_directory[BCTEXTLEN];
FileSystem fs;
strcpy(new_path, path);
fs.set_current_dir("");
fs.extract_dir(asset_directory, path);
// No path in asset.
// Take path of XML file.
if(!asset_directory[0])
{
fs.extract_dir(input_directory, file->filename);
// Input file has a path
if(input_directory[0])
{
fs.join_names(path, input_directory, new_path);
}
}
}
while(!result)
{
result = file->read_tag();
if(!result)
{
if(file->tag.title_is("/ASSET"))
{
result = 1;
}
else
if(file->tag.title_is("AUDIO"))
{
read_audio(file);
}
else
if(file->tag.title_is("AUDIO_OMIT"))
{
read_audio(file);
}
else
if(file->tag.title_is("FORMAT"))
{
char *string = file->tag.get_property("TYPE");
format = File::strtoformat(string);
use_header =
file->tag.get_property("USE_HEADER", use_header);
}
else
if(file->tag.title_is("FOLDER"))
{
char *string = file->tag.get_property("NUMBER");
if(string)
awindow_folder = atoi(string);
else
awindow_folder = AWindowGUI::folder_number(file->read_text());
}
else
if(file->tag.title_is("VIDEO"))
{
read_video(file);
}
else
if(file->tag.title_is("VIDEO_OMIT"))
{
read_video(file);
}
else
if(file->tag.title_is("INDEX"))
{
read_index(file);
}
}
}
//printf("Asset::read 2\n");
return 0;
}
示例4: load_edit
int Edits::load_edit(FileXML *file, int64_t &startproject, int track_offset)
{
Edit* current;
current = append_new_edit();
current->load_properties(file, startproject);
startproject += current->length;
int result = 0;
do{
result = file->read_tag();
if(!result)
{
if(file->tag.title_is("NESTED_EDL"))
{
char path[BCTEXTLEN];
path[0] = 0;
file->tag.get_property("SRC", path);
//printf("Edits::load_edit %d path=%s\n", __LINE__, path);
if(path[0] != 0)
{
current->nested_edl = edl->nested_edls->get(path);
}
// printf("Edits::load_edit %d nested_edl->path=%s\n",
// __LINE__,
// current->nested_edl->path);
}
else
if(file->tag.title_is("FILE"))
{
char filename[BCTEXTLEN];
filename[0] = 0;
file->tag.get_property("SRC", filename);
// Extend path
if(filename[0] != 0)
{
char directory[BCTEXTLEN], edl_directory[BCTEXTLEN];
FileSystem fs;
fs.set_current_dir("");
fs.extract_dir(directory, filename);
if(!strlen(directory))
{
fs.extract_dir(edl_directory, file->filename);
fs.join_names(directory, edl_directory, filename);
strcpy(filename, directory);
}
current->asset = edl->assets->get_asset(filename);
}
else
{
current->asset = 0;
}
//printf("Edits::load_edit 5\n");
}
else
if(file->tag.title_is("TRANSITION"))
{
current->transition = new Transition(edl,
current,
"",
track->to_units(edl->session->default_transition_length, 1));
current->transition->load_xml(file);
}
else
if(file->tag.title_is("/EDIT"))
{
result = 1;
}
}
}while(!result);
//printf("Edits::load_edit %d\n", __LINE__);
//track->dump();
//printf("Edits::load_edit %d\n", __LINE__);
return 0;
}