Description In the early days of computing, technicians in white coats controlled refrigerator-sized computers housed in sealed rooms, far from
ordinary users. Today, computers are inexpensive commodities, like television sets,
and ordinary people control and interact with them.
This new paradigm has led to a burgeoning demand for graphics-intensive and highly interactive interfaces.
Developing User Interfaces
is targeted at the programmer who will actually implement, rather than design, the user interface. Most user interface books focus on
psychology and usability, not programming techniques. This book recognizes the need for programmers to collaborate with usability experts
and psychologists, so topics such as the principles of visualization, human perception, and usability evaluation are touched upon. Yet
the primary focus remains on those tools and techniques required for programming the complex user interface.
* Focuses on advanced
programming topics
* event handling
* interaction with geometric objects
* widget tool kits
* input syntax
* Useful to programmers
using any language?no particular windowing system or tool kit is presumed, examples are drawn from a variety of commercial systems, and
code examples are presented in pseudo code
* The basic concepts of traditional computer graphics such as drawing and three-dimensional
modeling are covered for readers without a computer graphics background.
Contents Developing User Interfaces by Dan R. Olsen, Jr.
Preface
Chapter 1 Introduction
1.1 What This Book Is About
1.1.1 Early Computing
1.1.2 Winds of Change
1.1.3 The Legacy of Lab
Coats
1.1.4 A Question of Control
1.2 Setting the Context
1.2.1 Computer Graphics
1.2.2
Human Factors and Usability
1.2.3 Object-Oriented Software
1.2.4 Commercial Tools
1.3 An Overview
of the User Interface
1.3.1 The Interactive Cycle
1.3.2 The Interactive Porthole
1.3.3 The Interface Design
Process
1.4 Summary
Chapter 2 Designing the Functional Model
2.1 Examples
of Task-Oriented Functional Design
2.1.1 Line Oriented vs. Full-Screen Text Editors
2.1.2 Word Processors
2.1.3
Why Do Secretaries Have Typewriters?
2.2 Overall Approach
2.2.1 Task Analysis
2.2.2 Evaluation
of the Analysis
2.2.3 Functional Design
2.3 Task Analysis
2.3.1 Examples of Task Analysis
2.3.2 VCR Task Analysis
2.3.3 Student Registration Task Analysis
2.4 Evaluation of the Analysis
2.4.1
Understanding the User
2.4.2 Goals
2.4.3 Scenarios
2.4.4 Programmers and User Interface Design
2.5 Functional Design
2.5.1 Assignment of Agency
2.5.2 Object-Oriented Functional Design
2.6
Summary
Chapter 3 Basic Computer Graphics
3.1 Models for Images
3.1.1 Stroke
Model
3.1.2 Pixel Model
3.1.3 Region Model
3.2 Coordinate Systems
3.2.1 Device Coordinates
3.2.2 Physical Coordinates
3.2.3 Model Coordinates
3.2.4 Interactive Coordinates
3.3 Human
Visual Properties
3.3.1 Update Rates
3.4 Graphics Hardware
3.4.1 Frame Buffer Architecture
3.4.2 Cathode Ray Tube
3.4.3 Liquid Crystal Display
3.4.4 Hardcopy Devices
3.5 Abstract
Canvas Class
3.5.1 Methods and Properties
3.6 Drawing
3.6.1 Paths
3.6.2 Closed Shapes
3.7 Text
3.7.1 Font Selection
3.7.2 Font Information
3.7.3 Drawing Text
3.7.4 Outline
vs. Bitmapped Fonts
3.7.5 Character Selection
3.7.6 Complex Strings
3.8 Clipping
3.8.1
Regions
3.9 Color
3.9.1 Models for Representing Color
3.9.2 Human Color Sensitivity
3.10 Summary
Chapter 4 Basics of Event Handling
4.1 Windowing System
4.1.1
Software View of the Windowing System
4.1.2 Window Management
4.1.3 Variations on the Windowing System Model
4.1.4 Windowing Summary
4.2 Window Events
4.2.1 Input Events
4.2.2 Windowing Events
4.2.3 Redrawing
4.3 The Main Event Loop
4.3.1 Event Queues
4.3.2 Filtering Input Events
4.3.3 How to Quit
4.3.4 Object-Oriented Models of the Event Loop
4.4 Event Dispatching and
Handling
4.4.1 Dispatching Events
4.4.2 Simple Event Handling
4.4.3 Object-Oriented Event Handling
4.5 Communication between Objects
4.5.1 Simple Callback Model
4.5.2 Parent Notification Model
4.5.3
Object Connections Model
4.6 Summary
Chapter 5 Basic Interaction
5.1
Introduction to Basic Interaction
5.1.1 Functional Model
5.2 Model-View-Controller Architecture
5.2.1
The Problem with Multiple Parts
5.2.2 Changing the Display
5.2.3 General Event Flow
5.3 Model
Implementation
5.3.1 Circuit Class
5.3.2 CircuitView Class
5.3.3 View Notification in the Circuit Class
5.3.4 Overview of the Circuit Class
5.4 View/Controller Implementation
5.4.1 PartListView Class
5.4.2 LayoutView Class
5.5 Review of Important Concepts
5.5.1 Functional Model
5.5.2 View
Notification
5.5.3 View Implementation
5.6 An Alternative Implementation
5.7 Visual C++
5.7.1
CView
5.7.2 CDocument
5.8 Summary
Chapter 6 Widget Tool Kits
6.1
Model-View-Controller
6.1.1 Widget Models
6.1.2 Independence of View and Controller
6.2
Abstract Devices
6.2.1 Acquire and Release
6.2.2 Enable and Disable
6.2.3 Active and Inactive
6.2.4
Echo
6.3 Look and Feel
6.4 The Look
6.4.1 What the Look Must Present
6.4.2 Economy
of Screen Space
6.4.3 Consistent Look
6.4.4 Architectural Issues in Designing the Look
6.5 The
Feel
6.5.1 The Alphabet of Interactive Behaviors
6.5.2 Perceived Safety
6.6 Summary
Chapter 7 Interfaces from Widgets
7.1 Data-Driven Widget Implementations
7.1.1 Collections of
Widgets
7.2 Specifying Resources
7.2.1 Resource Organizations
7.2.2 Interface Design Tools
7.3 Layout
7.3.1 Fixed-Position Layout
7.3.2 Struts and Springs
7.3.3 Intrinsic Size
7.3.4
Variable Intrinsic Size
7.4 Communication
7.4.1 Parent Notification
7.5 Summary
Chapter 8 Input Syntax
8.1 Syntax Description Languages
8.1.1 Fields and Conditions
8.1.2
Special Types of Fields and Conditions
8.1.3 Productions
8.1.4 Input Sequences
8.2 Buttons
8.2.1 Check Buttons
8.3 Scroll Bars
8.4 Menus
8.5 Text Box
8.6 From Specification
to Implementation
8.6.1 Fields
8.6.2 Productions
8.7 Summary
Chapter
9 Geometry of Shapes
9.1 The Geometry of Interacting with Shapes
9.1.1 Scan Conversion
9.1.2 Distance
from a Point to an Object
9.1.3 Bounds of an Object
9.1.4 Nearest Point on an Object
9.1.5 Intersections
9.1.6 Inside/Outside
9.2 Geometric Equations
9.2.1 Implicit Equations
9.2.2 Parametric Equations
9.3 Path-Defined Shapes
9.3.1 Lines
9.3.2 Circles
9.3.3 Arcs
9.3.4 Ellipses
and Elliptical Arcs
9.3.5 Curves
9.3.6 Piecewise Path Objects
9.4 Filled Shapes
9.4.1
Rectangles
9.4.2 Circles and Ellipses
9.4.3 Pie Shapes
9.4.4 Boundary-Defined Shapes
9.5 Summary
Chapter 10 Geometric Transformations
10.1 The Three Basic Transformations
10.1.1 Translation
10.1.2 Scaling
10.1.3 Rotation
10.1.4 Combinations
10.2
Homogeneous Coordinates
10.2.1 Introduction to the Homogeneous Coordinates Model
10.2.2 Concatenation
10.2.3
Vectors
10.2.4 Inverse Transformations
10.2.5 Transformation about an Arbitrary Point
10.2.6 Generalized
Three-Point Transformation
10.3 A Viewing Transformation
10.3.1 Effects of Windowing
10.3.2 Alternative
Controls of Viewing
10.4 Hierarchical Models
10.4.1 Standard Scale, Rotate, Translate Sequence
10.5 Transformations and the Canvas
10.5.1 Manipulating the Current Transformation
10.5.2 Modeling with Display
Procedures
10.6 Summary
Chapter 11 Interacting with Geometry
11.1 Input
Coordinates
11.2 Object Control Points
11.3 Creating Objects
11.3.1 Line Paths
11.3.2 Splines
11.3.3 Polygons
11.4 Manipulating Objects
11.4.1 Selection and Dragging
11.4.2 General
Control Point Dragging Dialog
11.5 Transforming Objects
11.5.1 Transformable Representations of Shapes
11.5.2 Interactive Specification of the Basic Transformations
11.5.3 Snapping
11.6 Grouping Objects
11.6.1 Selection in a Hierarchical Model
11.6.2 Level of Interaction in a Hierarchy
11.7 Summary
Chapter 12 Drawing Architectures
12.1 Basic Drawing Interface
12.2 Interface Architecture
12.2.1
Draw-Area Architecture
12.2.2 Palette Architecture
12.2.3 Summary of Architecture
12.3 Tasks
12.3.1 Redrawing 12.3.2 Creating a New Object
12.3.3 Selecting Objects
12.3.4 Dragging Objects
12.3.5 Setting Attributes
12.3.6 Manipulating Control Points
12.4 Summary
Chapter
13 Cut, Copy, and Paste
13.1 Clipboards
13.1.1 Simple Clipboard
13.2 Publish and Subscribe
13.3 Embedded Editing
13.3.1 Embedded Pasting
13.3.2 Edit Aside
13.3.3 Edit in Place
13.4 Summary
Chapter 14 Monitoring the Interface: Undo, Groupware, and Macros
14.1
Undo/Redo
14.1.1 Simple History Architecture
14.1.2 Selective Undo
14.1.3 Hierarchical Undo
14.1.4
Review of Undo Architectural Needs
14.2 Groupware
14.2.1 Asynchronous Group Work
14.2.2 Synchronous
Group Work
14.2.3 Groupware Architectural Issues
14.3 Macros
14.4 Monitoring Architecture
14.4.1
Command Objects
14.4.2 Extended Command Objects
14.5 Summary
Endnotes
Index
Books and book related electronic products are priced in US dollars (USD), euro (EUR), and Great Britain Pounds (GBP). USD prices apply to the Americas and Asia Pacific. EUR prices apply in Europe and the Middle East. GBP prices apply to the UK and all other countries.