Ejemplo n.º 1
0
int Track::paste_silence(double start, double end, int edit_plugins, int edit_autos)
{
	int64_t start_i = to_units(start, 0);
	int64_t end_i = to_units(end, 1);

	edits->paste_silence(start_i, end_i);
	if(edit_autos) shift_keyframes(start_i, end_i - start_i);
	if(edit_plugins) shift_effects(start_i, end_i - start_i, edit_autos);

	edits->optimize();
	return 0;
}
Ejemplo n.º 2
0
void Track::align_edits(double start, 
	double end, 
	ArrayList<double> *times)
{
	int64_t start_units = to_units(start, 0);
	int64_t end_units = to_units(end, 0);

// If 1st track with data, times is empty & we need to collect the edit times.
	if(!times->size())
	{
		for(Edit *current = edits->first; current; current = NEXT)
		{
			if(current->startproject >= start_units &&
				current->startproject + current->length <= end_units)
			{
				times->append(from_units(current->startproject));
			}
		}
	}
	else
// All other tracks get silence or cut to align the edits on the times.
	{
		int current_time = 0;
		for(Edit *current = edits->first; 
			current && current_time < times->size(); )
		{
			if(current->startproject >= start_units &&
				current->startproject + current->length <= end_units)
			{
				int64_t desired_startunits = to_units(times->get(current_time), 0);
				int64_t current_startunits = current->startproject;
				current = NEXT;


				if(current_startunits < desired_startunits)
				{
//printf("Track::align_edits %d\n", __LINE__);
					edits->paste_silence(current_startunits,
						desired_startunits);
					shift_keyframes(current_startunits,
						desired_startunits - current_startunits);
				}
				else
				if(current_startunits > desired_startunits)
				{
					edits->clear(desired_startunits,
						current_startunits);
					if(edl->session->autos_follow_edits)
						shift_keyframes(desired_startunits,
							current_startunits - desired_startunits);
				}

				current_time++;
			}
			else
			{
				current = NEXT;
			}
		}
	}

	optimize();
}
Ejemplo n.º 3
0
void Plugin::shift(int64_t difference)
{
	Edit::shift(difference);
	shift_keyframes(difference);
}