README - QTSHELL

QTShell is a simple cross-platform QuickTime movie viewer application. It demonstrates how to incorporate QuickTime movie support into an application. You might think of QTShell as the simplest possible QuickTime movie playback application. It provides basic support for displaying movies in windows and editing those movies with the standard cut/copy/paste operations. QTShell also provides several nice enhancements to the bare-bones movie playback and editing. For instance, it determines the looping state of a movie and restores that state when the movie is opened. QTShell also saves the current sound volume of a movie when the movie is saved. Here's a short (and non-exhaustive) list of the features provided by QTShell:

-allows user to open one or more QuickTime movies into movable, resizable windows
-supports standard movie controllers for user interaction
-opens movie files dragged onto application icon
-supports standard cut/copy/paste/clear of movie segments
-supports undo of previous edit operation
-displays About box

QTShell was designed to provide identical features on both Mac and Windows. To help achieve this, much of the source code for QTShell is identical for both platforms (or nearly identical, using some short platform-specific #if TARGET_OS blocks). Most of this common source code is contained in the file ComFramework.c. Platform-specific code is divided between the two files MacFramework.c and WinFramework.c. Together, these three files provide a simple but powerful framework for QuickTime applications.

In general, you should not need to modify any of the three *Framework files. Your application-specific code should be put into the file ComApplication.c (or in files called by ComApplication.c). For instance, to handle application-specific menus, you can add code to the the function QTApp_HandleMenu in the file ComApplication.c; QTApp_HandleMenu is called by some code in ComFramework.c after the framework has determined that it cannot handle the selected menu item. In effect, ComApplication.c. consists of a number of function stubs that are called at various places in the framework to give your application a chance to override or augment the default framework behavior.

Two other files deserve some mention. The files QTUtilities.c and QTVRUtilities.c define a large number of functions that perform useful operations on QuickTime and QuickTime VR movies. QTShell uses the QTUtilities file to do some of its work (for instance, restoring the looping state of a movie). If you write an application geared toward managing QuickTIme VR movies, you might also want to use some of the functions in QTVRUtilities.c. (QTVRUtilities.c is not included in the basic QTShell project because it isn't needed.)

One final note: because we have a handful of files in our project, it's useful to adopt some function naming conventions to make it easy to determine where a particular function is defined. Here's a list of the function prefixes we have used:

         QTFrame_         Defined in ComFramework.c, MacFramework.c, or WinFramework.c
         QTApp_             Defined in ComApplication.c
         QTUtils_           Defined in QTUtilities.c
         QTVRUtils_       Defined in QTVRUtilities.c

Enjoy, 
QuickTime Team

