/* * (non-Javadoc) * * @see * si.vicos.annotations.editor.tracking.TrackingEditor.EditAssistant#editFrame * (si.vicos.annotations.editor.tracking.EditableAnnotatedSequence, int, * si.vicos.annotations.Annotation) */ @Override public EditList editFrame(EditableAnnotatedSequence sequence, int frame, Annotation region) { EditList list = new EditList(); try { list.add(new EditRegionOperation(frame, region)); list.add(new EditTagAddOperation(frame, "keyframe")); // Interpolate forward if possible int last = 0; for (last = frame + 1; last < sequence.size(); last++) if (sequence.hasTag(last, "keyframe") && !sequence.get(last).isNull()) break; if (!(last == sequence.size() || frame > last - 2)) list.addAll(interpolate(sequence, frame, region, last, sequence.get(frame))); // Interpolate backwards if possible int first = 0; for (first = frame - 1; first >= 0; first--) if (sequence.hasTag(first, "keyframe") && !sequence.get(first).isNull()) break; if (!(first == -1 || first > frame - 2)) list.addAll(interpolate(sequence, first, sequence.get(first), frame, region)); } catch (Exception e) { Application.getApplicationLogger().report(e); } return list; }