Search the Amulet manual by keyword, or browse the table of contents below.

TABLE OF CONTENTS

1. Amulet V2.0 Overview

1.1 Introduction
1.2 Amulet Email Addresses
1.3 Using Amulet in Products: Copyright and Licensing
1.4 How to Retrieve and Install Amulet
1.4.1 The Amulet Manual
1.4.2 Retreiving the Amulet source code distribution
1.4.2.1 Retrieving the source distribution via FTP
1.4.2.2 Retrieving the source distribution via WWW
1.4.3 Installing Amulet on a PC
1.4.3.1 Unpacking amulet.zip
1.4.3.2 Windows Environment Variables
1.4.3.3 Configuring Visual C++
1.4.3.4 Visual C++ Project Files
1.4.3.5 Compiling The Amulet Library
1.4.3.6 Compiling Test Programs and Demos
1.4.3.7 Using console.cpp to Simulate a Terminal Window
1.4.3.8 Writing and Compiling New Programs Using Amulet
1.4.3.9 PC filenames
1.4.4 Installating Amulet on a Unix Workstation
1.4.4.1 Unpacking amulet.tar.Z
1.4.4.2 Setting your Environment Variables
1.4.4.3 Generating the Amulet Library File
1.4.4.4 Compiling Test Programs and Examples
1.4.4.5 Writing and Compiling New Programs Using Amulet
1.4.4.6 Customizing the Makefile.vars.custom Variables
1.4.4.7 Why is my application so big?
1.4.5 Installing Amulet on a Macintosh
1.4.5.1 Unpacking amulet.sea.hqx
1.4.5.2 Macintosh Environment Variables
1.4.5.3 Creating the Precompiled Header file
1.4.5.4 Compiling The Amulet Library
1.4.5.5 Compiling Test Programs and Demos
1.4.5.6 Writing and Compiling New Programs Using Amulet
1.5 Test Programs and Demos
1.6 Amulet Header Files
1.6.1 Basic header files
1.6.2 Advanced header files
1.6.3 Standard Header File Macros
1.7 Parts of Amulet
1.8 Known Bugs
1.8.1 Linux bugs
1.8.2 Visual C++ bugs
1.8.3 Macintosh Bugs
1.9 Changes since Version 1.2
1.9.1 Changes from V2.0 beta to V2.0 official release
1.9.1.1 Minor Changes
1.9.1.2 Bug Fixes
1.9.2 Changes from V2.0 alpha to V2.0 beta
1.9.2.1 Major Changes
1.9.2.2 Minor Changes
1.9.2.3 Bug Fixes
1.9.3 Major Changes between V1.2 and V2.0alpha
1.9.4 Minor Changes between V1.2 and V2.0alpha
1.9.5 Very Minor Changes between V1.2 and V2.0alpha
1.9.6 Bug Fixes between V1.2 and V2.0alpha
1.9.7 Summary of Non-Backwards Compatible Changes
1.9.7.1 Details
1.10 Formal, Legal Language

2. Amulet Tutorial

2.1 Setting Up
2.1.1 Install Amulet in your Environment
2.1.2 Copy the Tutorial Starter Program
2.2 The Prototype-Instance System
2.2.1 Objects and Slots
2.2.2 Dynamic Typing
2.2.3 Inheritance
2.2.4 Instances
2.2.5 Prototypes
2.2.6 Default Values
2.2.7 Destroying Objects
2.2.8 Unnamed Objects
2.3 Graphical Objects
2.3.1 Lines, Rectangles, and Circles
2.3.2 Groups
2.3.3 Am_Group
2.3.4 Am_Map
2.3.5 Windows
2.4 Constraints
2.4.1 Formulas
2.4.2 Declaring and Defining Formulas
2.4.3 An Example of Constraints
2.4.4 Values and constraints in slots
2.4.5 Constraints in Groups
2.4.6 Common Formula Shortcuts
2.5 Interactors
2.5.1 Kinds of Interactors
2.5.2 The Am_One_Shot_Interactor
2.5.3 The Am_Move_Grow_Interactor
2.5.4 A Feedback Object with the Am_Move_Grow_Interactor
2.5.5 Command Objects
2.5.6 The Am_Main_Event_Loop
2.6 Widgets
2.7 Debugging
2.7.1 The Inspector
2.7.2 Tracing Interactors

3. ORE Object and Constraint System

3.1 Introduction
3.2 Include Files
3.3 Objects and Slots
3.3.1 Get and Set
3.3.2 Slot Keys
3.3.3 Value Types
3.3.4 The Basic Types
3.3.5 Bools
3.3.6 The Am_String Class
3.3.7 Using Wrapper Types
3.3.7.1 Standard Wrapper Methods
3.3.8 Storing Methods in Slots
3.3.9 Using Am_Value To Get A Slot Without Errors
3.4 Inheritance: Creating Objects
3.5 Destroying Objects
3.6 Parts
3.6.1 Parts Can Have Names
3.6.2 How Parts Behave With Regard To Create and Copy
3.6.3 Other Operations on Parts
3.7 Formulas
3.7.1 Formula Functions
3.7.1.1 Declaring Formulas
3.7.1.2 Formulas Returning Multiple Types
3.7.2 Using GV
3.7.3 Putting Formulas into Slots
3.7.4 Slot Setting and Inheritance of Formulas
3.7.5 Calling a Formula Procedure From Within Another Formula
3.8 Lists
3.8.1 Current pointer in Lists
3.8.2 Adding items to lists
3.8.3 Other operations on Lists
3.9 Iterators
3.9.1 Reading Iterator Contents
3.9.2 Types of Iterators
3.9.3 The Order of Iterator Items
3.10 Errors
3.11 Advanced Features of the Object System
3.11.1 Destructive Modification of Wrapper Values
3.11.2 Writing a Wrapper Using Amulet's Wrapper Macros
3.11.2.1 Creating the Wrapper Data Layer
3.11.2.2 Using The Wrapper Data Layer
3.11.2.3 Creating The Wrapper Outer Layer
3.11.3 The Am_Web Constraint
3.11.3.1 The Validation Procedure
3.11.3.2 The Create and Initialization Procedures
3.11.3.3 Installing Into a Slot
3.11.4 Using Am_Object_Advanced
3.11.5 Controlling Slot Inheritance
3.11.6 Controlling Formula Inheritance
3.11.7 Writing and Incorporating Demon Procedures
3.11.7.1 Object Level Demons
3.11.7.2 Slot Level Demons
3.11.7.3 Modifying the Demon Set and Activating Slot Demons
3.11.7.4 The Demon Queue
3.11.7.5 How to Allocate Demon Bits and the Eager Demon

4. Opal Graphics System

4.1 Overview
4.1.1 Include Files
4.2 The Opal Layer of Amulet
4.3 Basic Concepts
4.3.1 Windows, Objects, and Groups
4.3.2 The ``Hello World'' Example
4.3.3 Initialization and Cleanup
4.3.4 The Main Event Loop
4.3.5 Am_Do_Events
4.4 Slots Common to All Graphical Objects
4.4.1 Left, Top, Width, and Height
4.4.2 Am_VISIBLE
4.4.3 Line Style and Filling Style
4.4.4 Am_HIT_THRESHOLD and Am_PRETEND_TO_BE_LEAF
4.5 Specific Graphical Objects
4.5.1 Am_Rectangle
4.5.2 Am_Line
4.5.3 Am_Arc
4.5.4 Am_Roundtangle
4.5.5 Am_Polygon
4.5.5.1 The Am_Point_List Class
4.5.5.2 Using Point Lists with Am_Polygon
4.5.6 Am_Text
4.5.6.1 Fonts
4.5.6.2 Functions on Text and Fonts
4.5.6.3 Editing Text
4.5.7 Am_Bitmap
4.5.7.1 Loading Am_Image_Arrays From a File
4.5.7.2 Using Images with Am_Bitmap
4.6 Styles
4.6.1 Predefined Styles
4.6.2 Creating Simple Line and Fill Styles
4.6.2.1 Thick Lines
4.6.2.2 Halftone Stipples
4.6.3 Customizing Line and Fill Style Properties
4.6.3.1 Color Parameter
4.6.3.2 Thickness Parameter
4.6.3.3 Cap_Flag Style Parameter
4.6.3.4 Join_Flag Style Parameter
4.6.3.5 Dash Style Parameters
4.6.3.6 Fill Style Parameters
4.6.3.7 Stipple Parameters
4.6.4 Getting Style Properties
4.7 Groups
4.7.1 Adding and Removing Graphical Objects
4.7.2 Layout
4.7.2.1 Vertical and Horizontal Layout
4.7.2.2 Custom Layout Procedures
4.7.3 Am_Resize_Parts_Group
4.8 Maps
4.9 Methods on all Graphical Objects
4.9.1 Reordering Objects
4.9.2 Finding Objects from their Location
4.9.3 Beeping
4.9.4 Filenames
4.9.5 Translate Coordinates
4.10 Windows
4.10.1 Slots of Am_Window
4.10.2 Destroying windows
4.11 Am_Screen
4.12 Predefined formula constraints

5. Interactors and Command Objects for Handling Input

5.1 Include Files
5.2 Overview of Interactors and Commands
5.3 Standard Operation
5.3.1 Designing Behaviors
5.3.2 General Interactor Operation
5.3.3 Parameters
5.3.3.1 Events
5.3.3.2 Graphical Objects
5.3.3.3 Active
5.3.3.4 Am_Inter_Location
5.3.4 Top Level Interactor
5.3.5 Specific Interactors
5.3.5.1 Am_Choice_Interactor
5.3.5.2 Am_One_Shot_Interactor
5.3.5.3 Am_Move_Grow_Interactor
5.3.5.4 Am_New_Points_Interactor
5.3.5.5 Am_Text_Edit_Interactor
5.3.5.6 Am_Gesture_Interactor
5.4 Advanced Features
5.4.1 Output Slots of Interactors
5.4.2 Priority Levels
5.4.3 Multiple Windows
5.4.4 Running_Where
5.4.5 Starting, Stopping and Aborting Interactors
5.4.6 Support for Popping-up Windows and Modal Windows
5.5 Customizing Interactor Objects
5.5.1 Adding Behaviors to Interactors
5.5.1.1 Available slots of Am_Choice_Interactor and Am_One_Shot_Interactor
5.5.1.2 Available slots of Am_Move_Grow_Interactors
5.5.1.3 Available slots of Am_New_Point_Interactors
5.5.1.4 Available slots of Am_Text_Interactors
5.5.1.5 Available slots of Am_Gesture_Interactors
5.5.2 Modifying the Behavior of the Built-in Interactors
5.5.3 Entirely New Interactors
5.6 Command Objects
5.6.1 Implementation_Parent hierarchy
5.6.2 Undo
5.6.2.1 Enabling and Disabling Undoing of Individual Commands
5.6.2.2 Using the standard Undo Mechanisms
5.6.2.3 The Selective Undo Mechanism
5.6.2.4 Building your own Undo Mechanisms
5.7 Debugging

6. Widgets

6.1 Introduction
6.1.1 Current Widgets
6.1.2 Customization
6.1.3 Using Widget Objects
6.1.4 Application Interface
6.1.4.1 Accessing and Setting Widget Values
6.1.4.2 Commands in Widgets
6.1.4.3 Undoing Widgets
6.2 The Standard Widget Objects
6.2.1 Slots Common to All Widgets
6.2.2 Border_Rectangle
6.2.3 Buttons and Menus
6.2.3.1 Commands in Buttons and Menus
6.2.3.2 Accelerators for Commands
6.2.3.3 Am_Menu_Line_Command
6.2.3.4 Am_Button
6.2.3.5 Am_Button_Panel
6.2.3.6 Am_Radio_Button_Panel
6.2.3.7 Am_Checkbox_Panel
6.2.3.8 Am_Menu
6.2.3.9 Am_Menu_Bar
6.2.3.10 Am_Option_Button
6.2.4 Scroll Bars
6.2.4.1 Integers versus Floats
6.2.4.2 Commands in Scroll Bars
6.2.4.3 Horizontal and vertical scroll bars
6.2.4.4 Am_Scrolling_Group
6.2.5 Am_Text_Input_Widget
6.2.5.1 Command in the Text Input Widget
6.2.5.2 Tabbing from Widget to Widget
6.2.6 Am_Selection_Widget
6.2.6.1 Application Interface for Am_Selection_Widget
6.2.6.2 User Interface to Am_Selection_Widget
6.3 Dialog boxes
6.3.1 Support functions for Dialog Boxes
6.3.2 Slots of dialog boxes
6.3.3 Am_Text_Input_Dialog slots
6.4 Supplied Command Objects
6.4.1 Graphics Clipboard
6.4.2 Am_Graphics_Set_Property_Command
6.5 Starting, Stopping and Aborting Widgets

7. Gem: Amulet Low-Level Graphics Routines

7.1 Introduction
7.2 Include Files
7.3 Drawonables
7.3.1 Creating Drawonables
7.3.2 Modifying and Querying Drawonables
7.4 Drawing
7.4.1 General drawonable operations
7.4.2 Size Calculation for Images and Text
7.4.3 Clipping Operations
7.4.4 Regions
7.4.5 Drawing Functions
7.5 Event Handling
7.5.1 Am_Input_Event_Handlers
7.5.2 Input Events
7.5.2.1 Multiple Click Events
7.5.3 Main Loop

8. Debugging and the Inspector

8.1 Introduction
8.2 Include Files
8.3 Inspector
8.3.1 Invoking the Inspector
8.3.1.1 Changing the Keys
8.3.2 Overview of Inspector User Interface and Menus
8.3.3 Viewing and Editing Slot Values
8.4 Accessing Debugging Functions Procedurally
8.5 Hints on Debugging


Last Modified: 03:02pm EDT, May 24, 1996