Table of Contents

Front matter
Part I: Overview and Conventions
1 Overview of CLIM
2 Conventions
2.1 Audience, Goals, and Purpose
2.2 Package Structure
2.3 "Spread" Point Arguments to Functions
2.4 Immutability of Objects
2.4.1 Behavior of Interfaces
2.5 Protocol Classes and Predicates
2.6 Specialized Arguments to Generic Functions
2.7 Multiple Value setf
2.8 Sheet, Stream, or Medium Arguments to Macros
2.9 Macros that Expand into Calls to Advertised Functions
2.10 Terminology Pertaining to Error Conditions
Part II: Geometry Substrate
3 Regions
3.1 General Regions
3.1.1 The Region Predicate Protocol
3.1.2 Region Composition Protocol
3.2 Other Region Types
3.2.1 Points
3.2.1.1 The Point Protocol
3.2.2 Polygons and Polylines
3.2.2.1 The Polygon and Polyline Protocol
3.2.3 Lines
3.2.3.1 The Line Protocol
3.2.4 Rectangles
3.2.4.1 The Rectangle Protocol
3.2.5 Ellipses and Elliptical Arcs
3.2.5.1 The Ellipse and Elliptical Arc Protocol
4 Bounding Rectangles
4.1 Bounding Rectangles
4.1.1 The Bounding Rectangle Protocol
4.1.2 Bounding Rectangle Convenience Functions
5 Affine Transformations
5.1 Transformations
5.1.1 Transformation Conditions
5.2 Transformation Constructors
5.3 The Transformation Protocol
5.3.1 Transformation Predicates
5.3.2 Composition of Transformations
5.3.3 Applying Transformations
Part III: Windowing Substrate
6 Overview of Window Facilities
6.1 Introduction
6.2 Properties of Sheets
6.3 Sheet Protocols
7 Properties of Sheets
7.1 Basic Sheet Classes
7.2 Relationships Between Sheets
7.2.1 Sheet Relationship Functions
7.2.2 Sheet Genealogy Classes
7.3 Sheet Geometry
7.3.1 Sheet Geometry Functions
7.3.2 Sheet Geometry Classes
8 Sheet Protocols
8.1 Input Protocol
8.1.1 Input Protocol Functions
8.1.2 Input Protocol Classes
8.2 Standard Device Events
8.3 Output Protocol
8.3.1 Output Properties
8.3.2 Output Protocol Functions
8.3.3 Output Protocol Classes
8.3.4 Associating a Medium with a Sheet
8.3.4.1 Grafting and Degrafting of Mediums
8.4 Repaint Protocol
8.4.1 Repaint Protocol Functions
8.4.2 Repaint Protocol Classes
8.5 Sheet Notification Protocol
8.5.1 Relationship to Window System Change Notifications
8.5.2 Sheet Geometry Notifications
9 Ports, Grafts, and Mirrored Sheets
9.1 Introduction
9.2 Ports
9.3 Grafts
9.4 Mirrors and Mirrored Sheets
9.4.1 Mirror Functions
9.4.2 Internal Interfaces for Native Coordinates
Part IV: Sheet and Medium Output Facilities
10 Drawing Options
10.1 Medium Components
10.2 Drawing Option Binding Forms
10.2.1 Transformation "Convenience" Forms
10.2.2 Establishing Local Coordinate Systems
10.3 Line Styles
10.3.1 Line Style Protocol and Line Style Suboptions
10.3.2 Contrasting Dash Patterns
11 Text Styles
11.1 Text Styles
11.1.1 Text Style Protocol and Text Style Suboptions
11.2 Text Style Binding Forms
11.3 Controlling Text Style Mappings
12 Graphics
12.1 Overview of Graphics
12.2 Definitions
12.3 Drawing is Approximate
12.4 Rendering Conventions for Geometric Shapes
12.4.1 Permissible Alternatives During Rendering
12.5 Drawing Functions
12.5.1 Basic Drawing Functions
12.5.2 Compound Drawing Functions
12.6 Pixmaps
12.7 Graphics Protocols
12.7.1 General Behavior of Drawing Functions
12.7.2 Medium-specific Drawing Functions
12.7.3 Other Medium-specific Output Functions
13 Drawing in Color
13.1 The :ink Drawing Option
13.2 Basic Designs
13.3 Color
13.3.1 Standard Color Names and Constants
13.3.2 Contrasting Colors
13.4 Opacity
13.5 Color Blending
13.6 Indirect Inks
13.7 Flipping Ink
13.8 Examples of Simple Drawing Effects
14 General Designs
14.1 The Compositing Protocol
14.2 Patterns and Stencils
14.3 Tiling
14.4 Regions as Designs
14.5 Arbitrary Designs
14.6 Examples of More Complex Drawing Effects
14.7 Design Protocol
Part V: Extended Stream Output Facilities
15 Extended Stream Output
15.1 Basic Output Streams
15.2 Extended Output Streams
15.3 The Text Cursor
15.3.1 Text Cursor Protocol
15.3.2 Stream Text Cursor Protocol
15.4 Text Protocol
15.4.1 Mixing Text and Graphics
15.4.2 Wrapping of Text Lines
15.5 Attracting the User's Attention
15.6 Buffering of Output
16 Output Recording
16.1 Overview of Output Recording
16.2 Output Records
16.2.1 The Basic Output Record Protocol
16.2.2 The Output Record "Database" Protocol
16.2.3 Output Record Change Notification Protocol
16.3 Types of Output Records
16.3.1 Standard Output Record Classes
16.3.2 Graphics Displayed Output Records
16.3.3 Text Displayed Output Record
16.3.4 Top-Level Output Records
16.4 Output Recording Streams
16.4.1 The Output Recording Stream Protocol
16.4.2 Graphics Output Recording
16.4.3 Text Output Recording
16.4.4 Output Recording Utilities
17 Table Formatting
17.1 Overview of Table Formatting Facilities
17.2 Table Formatting Functions
17.3 The Table and Item List Formatting Protocols
17.3.1 Table Formatting Protocol
17.3.2 Row and Column Formatting Protocol
17.3.3 Cell Formatting Protocol
17.3.4 Item List Formatting Protocol
18 Graph Formatting
18.1 Graph Formatting Functions
18.2 The Graph Formatting Protocols
19 Bordered Output
20 Text Formatting
20.1 Textual List Formatting
20.2 Indented Output
20.3 Filled Output
21 Incremental Redisplay
21.1 Overview of Incremental Redisplay
21.1.1 Examples of Incremental Redisplay
21.2 Standard Programmer Interface
21.3 Incremental Redisplay Protocol
21.4 Incremental Redisplay Stream Protocol
Part VI: Extended Stream Input Facilities
22 Extended Stream Input
22.1 Basic Input Streams
22.2 Extended Input Streams
22.2.1 The Extended Input Stream Protocol
22.2.2 Extended Input Stream Conditions
22.3 Gestures and Gesture Names
22.3.1 Standard Gesture Names
22.4 The Pointer Protocol
22.5 Pointer Tracking
23 Presentation Types
23.1 Overview of Presentation Types
23.2 Presentations
23.2.1 The Presentation Protocol
23.3 Presentation Types
23.3.1 Defining Presentation Types
23.3.2 Presentation Type Abbreviations
23.3.3 Presentation Methods
23.3.4 Presentation Type Functions
23.4 Typed Output
23.5 Context-dependent (Typed) Input
23.6 Views
23.7 Presentation Translators
23.7.1 Defining Presentation Translators
23.7.2 Presentation Translator Functions
23.7.3 Finding Applicable Presentations
23.7.4 Translator Applicability
23.8 Standard Presentation Types
23.8.1 Basic Presentation Types
23.8.2 Numeric Presentation Types
23.8.3 Character and String Presentation Types
23.8.4 Pathname Presentation Type
23.8.5 "One-of" and "Some-of" Presentation Types
23.8.6 Sequence Presentation Types
23.8.7 "Meta" Presentation Types
23.8.8 Compound Presentation Types
23.8.9 Lisp Expression Presentation Types
24 Input Editing and Completion Facilities
24.1 The Input Editor
24.1.1 The Input Editing Stream Protocol
24.1.2 Suggestions for Input Editing Commands
24.2 Activation and Delimiter Gestures
24.3 Signalling Errors Inside present Methods
24.4 Reading and Writing of Tokens
24.5 Completion
25 Menu Facilities
26 Dialog Facilities
Part VII: Building Applications
27 Command Processing
27.1 Commands
27.2 Command Tables
27.3 Command Menus
27.4 Keystroke Accelerators
27.5 Presentation Translator Utilities
27.6 The Command Processor
27.6.1 Command Presentation Types
28 Application Frames
28.1 Overview of Application Frames
28.2 Defining and Creating Application Frames
28.2.1 Specifying the Panes of a Frame
28.3 Application Frame Functions
28.3.1 Interface with Presentation Types
28.4 The Generic Command Loop
28.5 Frame Managers
28.5.1 Finding Frame Managers
28.5.2 Frame Manager Operations
28.5.3 Frame Manager Settings
28.6 Examples of Applications
29 Panes
29.1 Overview of Panes
29.2 Basic Pane Construction
29.2.1 Pane Initialization Options
29.2.2 Pane Properties
29.3 Composite and Layout Panes
29.3.1 Layout Pane Options
29.3.2 Layout Pane Classes
29.3.3 Scroller Pane Classes
29.3.4 The Layout Protocol
29.4 CLIM Stream Panes
29.4.1 CLIM Stream Pane Options
29.4.2 CLIM Stream Pane Classes
29.4.3 Making CLIM Stream Panes
29.4.4 CLIM Stream Pane Functions
29.4.5 Creating a Standalone CLIM Window
29.5 Defining New Pane Types
29.5.1 Defining a New Leaf Pane
29.5.2 Defining a New Composite Pane
30 Gadgets
30.1 Overview of Gadgets
30.2 Abstract Gadgets
30.2.1 Using Gadgets
30.2.2 Implementing Gadgets
30.3 Basic Gadget Classes
30.4 Abstract Gadget Classes
30.4.1 The push-button Gadget
30.4.2 The toggle-button Gadget
30.4.3 The menu-button Gadget
30.4.4 The scroll-bar Gadget
30.4.5 The slider Gadget
30.4.6 The radio-box and check-box Gadgets
30.4.7 The list-pane and option-pane Gadgets
30.4.8 The text-field Gadget
30.4.9 The text-editor Gadget
30.5 Integrating Gadgets and Output Records
Part VIII: Appendices
A Glossary
B The CLIM-SYS Package
B.1 Resources
B.2 Multi-processing
B.3 Locks
B.4 Multiple Value setf
C Encapsulating Streams
C.1 Encapsulating Stream Classes
C.1.1 Encapsulating Stream Protocol
C.1.2 The "Delegation Problem"
D Common Lisp Streams
D.1 Stream Classes
D.2 Basic Stream Functions
D.3 Character Input
D.4 Character Output
D.5 Binary Streams
E Suggested Extensions to CLIM
E.1 Support for PostScript Output
E.2 Support for Reading Bitmap Files
F Changes from CLIM 1.0
Part IX: Index
Part X: Annotation Playground
G Annotation Playground