Performing “Low-Level” Edits

Low-level edits are a separate set of editing calls that don’t involve the clipboard or selection metaphors. They’re called “low level” because instead of operating at the conceptual level of “paste the contents of the clipboard into the user’s current selection,” they work at the level of “insert a segment from movie M1, ranging from time A to time B, into movie M2 at time C.”

Note

By way of comparison, although QuickTime has two sets of editing functions, Sun’s Java Media Framework has no editing API at all.

How do I do that?

This version reimplements doCopy( ), doCut( ), and doPaste( ) to use low-level editing calls on the Movie instead of cut/copy/paste-type calls on the MovieController.

First, LowLevelQTEditor needs a static Movie, called copiedMovie, to keep track of what’s on its virtual “clipboard” so that it can be shared across the new doCopy( ), doCut(), and doPaste( ) methods:

public void doCopy( ) throws QTException { copiedMovie = new Movie( ); TimeInfo selection = movie.getSelection( ); movie.insertSegment (copiedMovie, selection.time, selection.duration, 0); } public void doCut( ) throws QTException { copiedMovie = new Movie( ); TimeInfo selection = movie.getSelection( ); movie.insertSegment (copiedMovie, selection.time, selection.duration, 0); movie.deleteSegment (selection.time, selection.duration); controller.movieChanged( ); } public void doPaste( ) throws QTException { if (copiedMovie = = null) return; copiedMovie.insertSegment (movie, ...

Get QuickTime for Java: A Developer's Notebook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.