INTRODUCTION

The purpose in providing a visual language interface to the data processing programs included in the Khoros library is to increase the productivity of researchers and application developers. By providing a more natural environment, similar to the block diagrams that are already familiar to practitioners in the field, the system provides support to both novice and experienced programmers.

        ABOUT CANTATA

Cantata is a graphically expressed, data flow oriented language which provides a visual programming environment within the Khoros system. Data flow is a "naturally visible" approach in which a program is described as a directed graph, where each node represents an operator (or function) and each directed arc represents a path over which data tokens flow. In the data-driven model, execution of a node occurs whenever all its input data tokens are available. The result is placed on the node's output arc(s) and flows on to the next node for processing.

In cantata, the nodes represent processing routines from the Khoros libraries and the tokens represent data to be processed by the nodes. To create a cantata application, the user selects the desired programs (and control structures, as needed), places the corresponding glyph icons on the workspace, and interconnects these elements to indicate the flow of processing from routine to routine. The graphical programming elements of the visual language consist of the workspace master form and a flow graph based on connected glyphs, as described in the following sections.

        CANTATA MASTER FORM

PROGRAM SUBFORMS

        SUBFORM USAGE

                Subform Guide Pane

                Setting Program Parameters

                Subform Glyph Button

        USING CANTATA TO CONSTRUCT A VISUAL PROGRAM

MASTER ACTION BUTTONS

The action buttons on the master form provide the basic operations needed for the creation of and execution of processing flow graphs.

        ROUTINES MASTER ACTION BUTTON

        RUN AND RESET MASTER ACTION BUTTON

        QUIT MASTER ACTION BUTTON

        MASTER FORM GLYPH BUTTON

        TUTORIAL: CREATING A CANTATA PROGRAM

INTERACTION SUBFORMS

Interaction subform buttons are located on the top-left and left side of the cantata master form (as opposed to the program subform menu buttons which are located along the top of the master form). Clicking the mouse on a subform button, such as `Variables', brings up the corresponding subform. Clicking the mouse on a subform menu button, such as `Edit' or `Workspace', pops up a drop down menu of selections that can be immediate actions or subform actions. The following section may be skipped initially, as it contains the information needed for more advanced cantata programming.

        WORKSPACE ATTRIBUTES AND UTILITIES

                Saving Temporary Files

                Workspace File Utilities

                Setting Workspace Attributes

                Setting Workspace Attributes via Xdefaults

        USING DATA TRANSPORT / DISTRIBUTED PROCESSING

        WORKSPACE EDITING / SUBPROCEDURES

                Workspace Editing

                Procedures

                Saving Glyphs or Procedures

        DEFINE VARIABLES / EVALUATE EXPRESSIONS

DEFINING VARIABLES

                Arithmetic Operators

                Logical Operators

                Predefined Constants

                Functions

        PROGRAM FLOW CONTROL

                COUNT-LOOP Control Structure

COUNT-LOOP EXAMPLES

                WHILE-LOOP Control Structure

WHILE-LOOP EXAMPLES

                IF-THEN-ELSE Control Structure

IF-THEN-ELSE EXAMPLES

                MERGE Control Structure

                TRIGGER Control Structure

TRIGGER EXAMPLES

                EXPRESSION Control Structure

EXPRESSION EXAMPLES

                SWITCH Control Structure

SWITCH EXAMPLES

                Command Glyph

                Comment Glyph

AVAILABLE ROUTINES

The following sections give an overview of the data processing programs currently available on each of the Program Subforms within cantata.

        INPUT SOURCES Menu

                Input Data Files

                Create Image (2D)

                Create Signal (1D)

        OUTPUT Menu

                Information

                Display Images

                Plot Data

                Print Images

                Dither

        CONVERSIONS Menu

                Data Structure and Type Conversion

                Standard File Formats

                Remote Sensing and GIS File Formats

                Raw File Formats

                Color Transformations

                Maps and LUTs

                Compress

        ARITHMETIC Menu

                Unary Arithmetic

                Binary Arithmetic

                Logical Operations

                Matrix Algebra

        IMAGE PROCESSING Menu

                2D Spatial Domain Filters

                Morphological Operations

                2D Transforms

                2D Frequency Domain Filters

                Histograms

                Geometric Manipulations

                Subimage/Subsignal Operations

        SIGNAL ANALYSIS Menu

                Segmentation

                Feature Extraction

                Classification/Clustering Algorithms

        SIGNAL PROCESSING Menu

                Modify 1D Sequences

                1D Transforms

                1D Time Domain Filters

                1D Frequency Domain Filters

                1D Linear Operations

                Spectral Estimation

        CONTRIBUTED Menu

                Contributed (Example)

        REMOTE & GIS Menu

                Image Warping

                Surface Manipulation Menu

                GIS Vector Data Menu