`
`ROBERT W. SCHEIFLER & JAMES GETTYS
`
`With Jim Flowers & David Rosenthal
`
`THIRD EDITION
`
`GOOGLE EXHIBIT 1027
`
`Page 1 of 61
`
`
`
`Page 2 of 61
`
`GOOGLE EXHIBIT 1027
`
`GOOGLE EXHIBIT 1027
`
`Page 2 of 61
`
`
`
`X WINDOW SYSTEM
`
`The Complete Reference to Xlib,
`X Protocol, ICCCM, XLFD
`
`GOOGLE EXHIBIT 1027
`
`Page 3 of 61
`
`
`
`Digital Press X and Motif Series
`
`Motif Programming
`The Essentials ... and More
`
`Marshall Brain
`
`X Window System Toolkit
`The Complete Programmer's Guide and Specification
`
`Paul]. Asente and Ralph R. Swick
`
`X and Motif Quick Reference Guide
`Randi J. Rost
`
`X Window System
`The Complete Reference to Xlib, X Protocol, ICCCM, XLFD
`Third Edition
`
`Robert W. Scheifler and James Gettys
`With Jim Flowers, David Rosenthal
`
`GOOGLE EXHIBIT 1027
`
`Page 4 of 61
`
`
`
`X WINDOW SYSTEM
`
`The Complete Reference to Xlib,
`X Protocol, ICCCM, XLFD
`
`Third Edition
`
`X VERSION 11, RELEASE 5
`
`Robert W. Scheifler James Gettys
`
`with Jim Flowers, David Rosenthal
`
`and contributions from Chuck Adams, Vania Joloboff, Bill McMahon,
`Al Mento, Rod Newman, Al Tabayoyon, Glenn Widener
`
`Digital Press
`
`GOOGLE EXHIBIT 1027
`
`Page 5 of 61
`
`
`
`Copyright e 1992 by Butterworth-Heinemann.
`& A member of the Reed Elsevier group.
`All rights reserved.
`
`Digital Press ™ is an imprint of Butterworth-Heinemann, Publisher for Digital Equipment Corporation.
`
`No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or
`by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written
`permission of the publisht2'.
`
`Recognizing the importance of preserving what has been written, it is the policy of Butterworth-
`@) Heinemann to have the books it publishes printed on acid-free pape.r, and we exert our best efforts to that
`end.
`
`Trademarked products mentioned in this book are listed on page 1000.
`
`The material in this book is derived from the following standards of the MIT X Consortium, used by
`pennission: Xlib--C Language X Interface, X Version II, Release 5, by James Gettys, Robert Scheifler, et
`al. copyright © 1985, 1986, 1987, 1988, 1989, 1990, 1991 by Massachusetts Institute of Technology and
`Digital Equipment Corporation, portions copyright© 1990, 1991 by Tektrouix, Inc. X Window System
`Protocol, X '1ersion 11, Release 5, by Robert W. Scheifler, copyright© 1986, 1987, 1988 by Massachusetts
`Institute of T.:chnology. Jn1er-Clie11l Communicalio11s Co11venlioru Manual, Version I .1, X Version 11,
`Release 5 by David Rosenthal, copyright© 1987, 1988, 1989 by Sun Microsystems, Inc. X Logical Fonl
`Description Conventions, Version 1.4, X Version 11, Release 5, by Jim Flowers, copyright e 1988 by
`Massachusetts Institute of Technology, copyright © 1989 by Digital Equipment Corporation. Compound
`Text Encoding, Version 1.1, X Version II, Release 5, by Robert Scheifler, copyright© by Massachusetts
`Institute of Technology, Bitmap Distribution Format, Version 2.1, X Version II, Release 5, copyright ©
`1984, 1987, 1988 by Adobe Systems, Inc.
`
`Views expressed in this book are those of the authors, not of the publisher. Butterworth-Heinemann is not
`responsible for any errors that may appear in this book.
`
`Library of Congress Cataloging-in-Publication Data
`
`Scheifler, Robert W., 1954-
`X Wmdow System: the complete reference to Xlib, X Protocol ICCCM, XLFD/Robert W.
`Scheifler, James Gettys; with Jim Flowers, David Rosenthal.-3rd ed.
`p.
`cm. - (Digital Press X and Motif series)
`"X version 11, release 5"
`Includes index.
`ISBN 1-55558-088-2
`1. X Wmdow System (Computer System) I. Gettys, James, 1953- II. Title. ill. Series.
`QA76.76.W56S34 1992
`005.4'3-dc20
`
`991-42753
`CIP
`
`Order number EY-J802E-DP
`
`109876
`
`Printed in the United States of America
`
`GOOGLE EXHIBIT 1027
`
`Page 6 of 61
`
`
`
`V
`
`xxiv
`
`1
`
`17
`
`19
`20
`23
`23
`25
`25
`26
`26
`27
`
`29
`29
`
`31
`
`Contents
`
`Acknowledgments
`
`Introduction
`
`PART I. XLIB-C LANGUAGE X INTERFACE
`
`Chapter 1. Introduction to Xllb
`I.I
`Overview of the X Window System
`1.2
`1.3
`1.4
`
`Errors
`Standard Header Files
`Generic Values and Types
`Naming and Argument Conventions within Xlib
`
`1.5
`1.6
`1.7
`1.8
`
`Programming Considerations
`Character Sets and Encodings
`Formatting Conventions
`
`Chapter 2. Display Functions
`2.1
`Opening the Display
`2.2
`Obtaining Information about the Display,
`Image Formats, or Screens
`
`GOOGLE EXHIBIT 1027
`
`Page 7 of 61
`
`
`
`vi
`
`X WINDOWS YS TEM
`
`2.2.1
`2.2.2
`2.2.3
`2.3
`2.4
`2.5
`2.6
`
`Display Macros
`Image Format Functions and Macros
`Screen Information Macros
`Generating a NoOperation Protocol Request
`Freeing Client-Created Data
`Closing the Display
`X Server Connection Close Operations
`
`Override Redirect Flag
`Colormap Attribute
`Cursor Attribute
`Creating Windows
`
`Chapter 3. Window Functions
`3.1
`Visual Types
`3.2
`Window Attributes
`3.2.1
`Background Attribute
`3.2.2
`Border Attribute
`3.2.3
`Gravity Attributes
`3.2.4
`Backing Store Attribute
`3.2.5
`Save Under Flag
`3.2.6
`Backing Planes and Backing Pixel Attributes
`3.2.7
`Event Mask and Do Not Propagate Mask Attributes
`3.2.8
`3.2.9
`3.2.10
`3.3
`3.4
`3.5
`3.6
`3.7
`3.8
`3.9
`
`Destroying Windows
`Mapping Windows
`U nmapping Windows
`Configuring Windows
`Changing Window Stacking Order
`
`Changing Window Attributes
`
`Chapter 4. Window Information Functions
`4.1
`Obtaining Window Information
`4.2
`
`Translating Screen Coordinates
`
`31
`38
`41
`44
`45
`45
`46
`
`48
`49
`51
`54
`56
`57
`58
`59
`59
`60
`60
`61
`61
`61
`65
`66
`68
`69
`75
`78
`
`83
`83
`87
`
`GOOGLE EXHIBIT 1027
`
`Page 8 of 61
`
`
`
`Contents
`
`4.3
`4.4
`4.5
`
`Properties and Atoms
`
`Obtaining and Changing Window Properties
`Selections
`
`Chapter 5. Pixmap and Cursor Functions
`5.1
`Creating and Freeing Pixmaps
`5.2
`
`Creating, Recoloring, and Freeing Cursors
`
`Color Strings
`RGB Device String Specification
`RGB Intensity String Specification
`Device-Independent String Specifications
`
`Color Conversion Contexts and Gamut Mapping
`Creating, Copying, and Destroying Colormaps
`Mapping Color Names to Values
`Allocating and Freeing Color Cells
`
`Modifying and Querying Colormap Cells
`Color Conversion Context Functions
`Getting and Setting the Color Conversion Context
`of a Colormap
`Obtaining the Default Color Conversion Context
`
`Chapter 6. Color Management Functions
`6.1
`Color Structures
`6.2
`6.2.1
`6.2.2
`6.2.3
`6.3
`6.4
`6.5
`6.6
`6.7
`6.8
`6.8.1
`
`6.8.2
`6.8.3
`6.8.4
`6.8.5
`6.9
`6.10
`6.10.1
`6.10.2
`6.10.3
`6.10.4
`
`Color Conversion Context Macros
`Modifying Attributes of a Color Conversion Context
`Creating and Freeing a Color Conversion Context
`Converting Between Color Spaces
`
`Callback Functions
`Prototype Gamut Compression Procedure
`Supplied Gamut Compression Procedures
`Prototype White Point Adjustment Procedure
`
`Supplied White Point Adjustment Procedures
`
`vii
`
`89
`93
`98
`
`101
`101
`102
`
`107
`109
`112
`113
`114
`114
`115
`116
`118
`120
`127
`133
`
`133
`134
`134
`136
`137
`138
`139
`140
`141
`143
`143
`
`GOOGLE EXHIBIT 1027
`
`Page 9 of 61
`
`
`
`Vlll
`
`X WINDOW SYSTEM
`
`6.11
`6.11.1
`6.11.2
`6.11.3
`6.11.4
`6.12
`6.12.1
`6.12.2
`6.12.3
`6.12.4
`6.12.5
`6.12.6
`6.12.7
`6.12.8
`6.12.9
`
`Gamut Querying Functions
`Red, Green, and Blue Queries
`CIELab Queries
`CIELuv Queries
`TekHVC Queries
`Color Management Extensions
`Color Spaces
`
`Adding Device-Independent Color Spaces
`Querying Color Space Format and Prefix
`Creating Additional Color Spaces
`Parse String Callback
`
`Color Specification Conversion Callback
`
`Function Sets
`Adding Function Sets
`Creating Additional Function Sets
`
`Chapter 7. Graphics Context Functions
`7.1
`Manipulating Graphics Context/State
`7.2
`Using GC Convenience Routines
`7.2.1
`Setting the Foreground, Background, Function,
`or Plane Mask
`
`7.2.2
`7.2.3
`7.2.4
`7.2.5
`7.2.6
`7.2.7
`
`Setting the Line Attributes and Dashes
`Setting the Fill Style and Fill Rule
`Setting the Fill Tile and Stipple
`Setting the Current Font
`Setting the Clip Region
`Setting the Arc Mode, Subwindow Mode,
`and Graphics Exposure
`
`Chapter 8. Graphics Functions
`8.1
`Clearing Areas
`8.2
`Copying Areas
`8.3
`Drawing Points, Lines, Rectangles, and Arcs
`
`145
`145
`148
`150
`153
`155
`156
`156
`157
`157
`159
`159
`161
`161
`162
`
`165
`165
`179
`
`179
`181
`183
`183
`187
`187
`
`189
`
`191
`191
`193
`195
`
`GOOGLE EXHIBIT 1027
`
`Page 10 of 61
`
`
`
`Contents
`
`8.3.1
`8.3.2
`8.3.3
`8.3.4
`8.4
`8.4.1
`8.4.2
`8.4.3
`8.5
`8.5.1
`8.5.2
`8.5.3
`8.5.4
`8.5.5
`8.6
`8.6.1
`8.6.2
`8.6.3
`8.7
`
`Drawing Single and Multiple Points
`Drawing Single and Multiple Lines
`Drawing Single and Multiple Rectangles
`Drawing Single and Multiple Arcs
`Filling Areas
`Filling Single and Multiple Rectangles
`Filling a Single Polygon
`Filling Single and Multiple Arcs
`
`Font Metrics
`Loading and Freeing Fonts
`Obtaining and Freeing Font Names and Information
`Computing Character String Sizes
`Computing Logical Extents
`Querying Character String Sizes
`Drawing Text
`Drawing Complex Text
`Drawing Text Characters
`
`Drawing Image Text Characters
`Transferring Images between Client and Server
`
`Chapter 9. Window and Session Manager Functions
`9.1
`Changing the Parent of a Window
`9.2
`Controlling the Lifetime of a Window
`9.3
`Managing Installed Colormaps
`9.4
`Setting and Retrieving the Font Search Path
`9.5
`9.6
`9.7
`9.8
`9.8.1
`9.8.2
`
`Changing, Enabling, or Disabling Access Control
`
`Server Grabbing
`
`Killing Clients
`Screen Saver Control
`Controlling Host Access
`Adding, Getting, or Removing Hosts
`
`ix
`
`196
`197
`199
`200
`203
`203
`205
`206
`207
`212
`214
`217
`217
`219
`221
`222
`223
`224
`226
`
`232
`232
`233
`235
`237
`238
`239
`239
`242
`243
`245
`
`GOOGLE EXHIBIT 1027
`
`Page 11 of 61
`
`
`
`X
`
`X WINDOW SYSTEM
`
`Chapter 10. Events
`IO.I
`Event Types
`10.2
`Event Structures
`10.3
`Event Masks
`10.4
`Event Processing Overview
`10.5
`Keyboard and Pointer Events
`10.5.1
`Pointer Button Events
`10.5.2
`Keyboard and Pointer Events
`10.6
`Window Entry/Exit Events
`10.6.1
`Normal Entry/Exit Events
`
`Grab and Ungrab Entry/Exit Events
`Input Focus Events
`Normal Focus Events and Focus Events While Grabbed
`Focus Events Generated by Grabs
`Key Map State Notification Events
`
`Exposure Events
`Expose Events
`GraphicsExpose and NoExpose Events
`Window State Change Events
`
`10.6.2
`10.7
`10.7.1
`10.7.2
`10.8
`10.9
`10.9.1
`10.9.2
`IO.IO
`IO.IO.I
`10.10.2
`10.10.3
`10.10.4
`10.10.5
`10.10.6
`MapNotify Events
`10.10.7
`MappingNotify Events
`10.10.8
`ReparentNotify Events
`10.10.9
`UnmapNotify Events
`IO.IO.IO VisibilityNotify Events
`10.11
`Structure Control Events
`10.11.1
`CirculateRequest Events
`
`CirculateNotify Events
`ConfigureNotify Events
`CreateNotify Events
`DestroyNotify Events
`GravityNotify Events
`
`247
`247
`248
`250
`252
`253
`253
`256
`259
`262
`263
`264
`265
`268
`268
`269
`269
`270
`272
`272
`273
`275
`276
`276
`277
`278
`279
`280
`280
`282
`282
`
`GOOGLE EXHIBIT 1027
`
`Page 12 of 61
`
`
`
`Contents
`
`10.11.2
`10.11.3
`10.11.4
`10.12
`10.13
`10.13.1
`10.13.2
`10.13.3
`10.13.4
`10.13.5
`
`ConfigureRequest Events
`MapRequest Events
`ResizeRequest Events
`Colormap State Change Events
`Client Communication Events
`
`ClientMessage Events
`PropertyNotify Events
`SelectionClear Events
`SelectionRequest Events
`
`SelectionNotify Events
`
`Chapter 11. Event Handling Functions
`11.1
`Selecting Events
`11.2
`Handling the Output Buffer
`11.3
`11.4
`11.4.1
`11.4.2
`11.4.3
`11.5
`11.6
`11.7
`11.8
`11.8.1
`11.8.2
`
`Event Queue Management
`Manipulating the Event Queue
`Returning the Next Event
`Selecting Events Using a Predicate Procedure
`Selecting Events Using a Window or Event Mask
`Putting an Event Back into the Queue
`Sending Events to Other Applications
`Getting Pointer Motion History
`Handling Protocol Errors
`Enabling or Disabling Synchronization
`Using the Default Error Handlers
`
`Chapter 12. Input Device Functions
`12.1
`Pointer Grabbing
`12.2
`Keyboard Grabbing
`12.3
`Resuming Event Processing
`12.4
`Moving the Pointer
`
`xi
`
`283
`284
`285
`285
`286
`286
`287
`288
`289
`289
`
`291
`291
`292
`293
`294
`295
`295
`298
`301
`301
`302
`304
`304
`305
`
`311
`311
`318
`322
`325
`
`GOOGLE EXHIBIT 1027
`
`Page 13 of 61
`
`
`
`xii
`
`X WINDOW SYSTEM
`
`12.5
`12.6
`12.7
`
`Controlling Input Focus
`Keyboard and Pointer Settings
`Keyboard Encoding
`
`Locale and Modifier Dependencies
`
`Chapter 13. Locales and Internationalized Text Functions
`13.1
`X Locale Management
`13.2
`13.3
`13.4
`13.5
`13.6
`13.6.1
`
`Creating and Freeing a Font Set
`Obtaining Font Set Metrics
`Drawing Text Using Font Sets
`Input Method Overview
`
`Input Method Architecture
`
`Input Contexts
`Getting Keyboard Input
`Focus Management
`Geometry Management
`
`Event Filtering
`
`Callbacks
`Variable Argument Lists
`Input Method Functions
`
`Input Context Functions
`
`13.6.2
`13.6.3
`13.6.4
`13.6.5
`13.6.6
`13.6.7
`13.7
`13.8
`13.9
`13.10
`13.10.1
`13.10.2
`13.10.3
`13.10.4
`13.10.5
`13.10.6
`13.10.7
`13.10.7.1 Area
`13.10.7.2 Area Needed
`13.10.7.3 Spot Location
`
`XIC Value Arguments
`Input Style
`Client Window
`Focus Window
`
`Resource Name and Class
`
`Geometry Callback
`Filter Events
`Preedit and Status Attributes
`
`326
`327
`334
`
`341
`342
`344
`346
`351
`357
`361
`363
`
`365
`366
`366
`367
`368
`369
`370
`370
`374
`378
`379
`380
`380
`381
`381
`381
`381
`382
`382
`382
`
`GOOGLE EXHIBIT 1027
`
`Page 14 of 61
`
`
`
`Contents
`
`13.10.7.4 Colormap
`13.10.7.5 Foreground and Background
`13.10.7.6 Background Pixmap
`13.10.7.7 Font Set
`13.10.7.8 Line Spacing
`13.10.7.9 Cursor
`13.10.7.10 Preedit and Status Callbacks
`13.11
`Callback Semantics
`13.11.1
`Geometry Callback
`13.11.2
`Preedit State Callbacks
`13.11.3
`Preedit Draw Callback
`13.11.4
`13.11.5
`13.12
`13.13
`13.14
`13.14.1
`13.14.2
`13.15
`
`Preedit Caret Callback
`
`Status Callbacks
`Event Filtering
`Getting Keyboard Input
`Input Method Conventions
`
`Client Conventions
`Synchronization Conventions
`String Constants
`
`Setting and Reading Text Properties
`
`Chapter 14. Inter-Client Communication Functions
`14.1
`Client to Window Manager Communication
`14.1.1
`Manipulating Top-Level Windows
`14.1.2
`Converting String Lists
`14.1.3
`14.1.4
`14.1.5
`14.1.6
`14.1.7
`14.1.8
`14.1.9
`14.1.10
`
`Setting and Reading the WM_NAME Property
`Setting and Reading the WM_ICON_NAME Property
`Setting and Reading the WM_HINTS Property
`Setting and Reading the WM_NORMAL_HINTS Property
`
`Setting and Reading the WM_CLASS Property
`Setting and Reading the WM_TRANSIENT_FOR Property
`Setting and Reading the WM_PROTOCOLS Property
`
`Xlll
`
`383
`383
`383
`384
`384
`384
`384
`385
`386
`387
`387
`390
`392
`393
`394
`396
`396
`396
`397
`
`399
`401
`402
`403
`409
`411
`412
`414
`417
`
`421
`423
`424
`
`GOOGLE EXHIBIT 1027
`
`Page 15 of 61
`
`
`
`xiv
`
`X WINDOW SYSTEM
`
`14.1.11
`
`14.1.12
`14.1.13
`14.2
`
`14.2.1
`14.2.2
`14.3
`14.3.1
`14.3.2
`
`Setting and Reading the WM_ COLORMAP _ WINDOWS
`Property
`Setting and Reading the WM_ICON_SIZE Property
`Using Window Manager Convenience Functions
`Client to Session Manager Communication
`
`Setting and Reading the WM_COMMAND Property
`Setting and Reading the WM_CLIENT_MACHINE Property
`Standard Colormaps
`Standard Colormap Properties and Atoms
`Setting and Obtaining Standard Colormaps
`
`Chapter 15. Resource Manager Functions
`15.1
`Resource File Syntax
`Resource Manager Matching Rules
`15.2
`15.3
`Quarks
`Creating and Storing Databases
`Merging Resource Databases
`Looking Up Resources
`Storing Into a Resource Database
`Enumerating Database Entries
`Parsing Command Line Options
`
`15.4
`15.5
`15.6
`15.7
`15.8
`15.9
`
`Chapter 16. Application Utility Functions
`16.1
`Keyboard Utility Functions
`16.1.1
`Keysym Classification Macros
`16.2
`Latin-I Keyboard Event Functions
`16.3
`Allocating Permanent Storage
`
`16.4
`16.5
`16.5.1
`16.5.2
`16.5.3
`
`Parsing the Window Geometry
`Manipulating Regions
`Creating, Copying, or Destroying Regions
`Moving or Shrinking Regions
`Computing wid1 Regions
`
`425
`426
`428
`431
`
`431
`
`433
`433
`437
`438
`
`441
`443
`444
`445
`
`449
`452
`454
`456
`459
`460
`
`463
`463
`
`466
`467
`468
`469
`471
`471
`472
`473
`
`GOOGLE EXHIBIT 1027
`
`Page 16 of 61
`
`
`
`Contents
`
`16.5.4
`16.5.5
`16.6
`16.7
`16.8
`16.9
`16.10
`
`Determining if Regions Are Empty or Equal
`
`Lcating a Point or a Rectangle in a Region
`Using Cut Buffers
`Determining the Appropriate Visual Type
`Manipulating Images
`Manipulating Bitmaps
`Using the Context Manager
`
`PART II. X WINDOW SYSTEM PROTOCOL
`
`1.
`2.
`3.
`4.
`5.
`6.
`7.
`8.
`9.
`10.
`11.
`12.
`
`Protocol Formats
`Syntactic Conventions
`Common Types
`Errors
`Keyboards
`Pointers
`Predefined Atoms
`
`Connection Setup
`Requests
`Connection Close
`Events
`
`Flow Control and Concurrency
`
`PART Ill.
`
`INTER-CLIENT COMMUNICATION
`CONVENTIONS MANUAL
`
`1.
`I.I
`1.2
`1.2.1
`1.2.2
`
`Introduction
`Evolution of the Conventions
`Atoms
`What Are Atoms?
`
`Predefined Atoms
`
`xv
`
`474
`475
`475
`478
`479
`483
`487
`
`489
`
`491
`492
`493
`495
`497
`499
`499
`500
`506
`587
`588
`604
`
`605
`
`607
`607
`608
`608
`609
`
`GOOGLE EXHIBIT 1027
`
`Page 17 of 61
`
`
`
`XVI
`
`X WINDOW SYSTEM
`
`1.2.3
`1.2.4
`1.2.5
`2.
`2.1
`2.2
`2.3
`2.3.1
`2.3.2
`2.4
`2.5
`2.6
`2.6.1
`2.6.1.1
`2.6.1.2
`2.6.1.3
`2.6.2
`2.6.3
`2.6.3.1
`2.6.3.2
`2.6.3.3
`2.7
`2.7.1
`2.7.2
`2.7.3
`2.7.4
`3.
`4.
`4.1
`4.1.1
`4.1.2
`4.1.2.1
`
`Naming Conventions
`Semantics
`Name Spaces
`Peer-to-Peer Communication by Means of Selections
`Acquiring Selection Ownership
`Responsibilities of the Selection Owner
`
`Giving Up Selection Ownership
`Voluntarily Giving Up Selection Ownership
`Forcibly Giving Up Selection Ownership
`Requesting a Selection
`Large Data Transfers
`
`Use of Selection Atoms
`
`Selection Atoms
`The PRIMARY Selection
`The SECONDARY Selection
`The CLIPBOARD Selection
`Target Atoms
`Selection Targets with Side Effects
`DELETE
`INSERT _SELECTION
`INSERT_PROPERTY
`Use of Selection Properties
`TEXT Properties
`INCR Properties
`DRAWABLE Properties
`SP AN Properties
`Peer-to-Peer Communication by Means of Cut Buffers
`Client to Window Manager Communication
`Client's Actions
`Creating a Top-Level Window
`Client Properties
`WM_NAME Property
`
`609
`610
`610
`610
`611
`613
`615
`615
`616
`616
`618
`619
`619
`620
`620
`620
`621
`623
`624
`624
`624
`625
`626
`626
`627
`628
`628
`629
`630
`630
`631
`632
`
`GOOGLE EXHIBIT 1027
`
`Page 18 of 61
`
`
`
`Contents
`
`4.1.2.2
`4.1.2.3
`4.1.2.4
`4.1.2.5
`4.1.2.6
`4.1.2.7
`4.1.2.8
`4.1.3
`4.1.3.1
`4.1.3.2
`4.1.4
`4.1.5
`4.1.6
`4.1.7
`4.1.8
`4.1.9
`4.1.10
`4.1.11
`4.2
`4.2.1
`4.2.2
`4.2.3
`4.2.4
`4.2.5
`4.2.6
`4.2.7
`4.2.8
`4.2.9
`4.3
`5.
`5.1
`5.1.1
`
`WM_ICON_NAME Property
`WM_NORMAL_HINTS Property
`WM_HINTS Property
`
`WM_CI.ASS Property
`WM_ TRANSIENT _FOR Property
`WM_PROTOCOLS Property
`WM_ COLORMAP _ WINDOWS Property
`
`Window Manager Properties
`WM_STATE Property
`WM_ICON_SIZE Property
`Changing Window State
`
`Configuring the Window
`
`Changing Window Attributes
`Input Focus
`Colormaps
`Icons
`
`Pop-up Windows
`Window Groups
`Client Responses to Window Manager Actions
`Reparenting
`
`Redirection of Operations
`
`Window Move
`Window Resize
`Iconify and Deiconify
`Colormap Change
`Input Focus
`ClientMessage Events
`Redirecting Requests
`Summary of Window Manager Property Types
`Client to Session Manager Communication
`Client Actions
`Properties
`
`xvii
`
`633
`633
`635
`638
`638
`639
`640
`640
`640
`640
`641
`643
`645
`646
`649
`651
`653
`653
`654
`654
`655
`656
`657
`657
`657
`658
`659
`659
`660
`661
`661
`661
`
`GOOGLE EXHIBIT 1027
`
`Page 19 of 61
`
`
`
`xviii
`
`X WINDOW SYSTEM
`
`5.1.1.1
`5.1.1.2
`5.1.1.3
`5.1.2
`5.2
`5.2.1
`5.2.2
`5.3
`6.
`6.1
`6.2
`6.3
`6.4
`6.5
`6.6
`7.
`7.1
`7.2
`8.
`
`WM_COMMAND Property
`
`WM_ CLIENT _MACHINE Property
`WM_STATE Property
`Termination
`Client Responses to Session Manager Actions
`Saving Client State
`
`Window Deletion
`Summary of Session Manager Property Types
`Manipulation of Shared Resources
`The Input Focus
`The Pointer
`
`Grabs
`Colormaps
`The Keyboard Mapping
`
`The Modifier Mapping
`
`Device Color Characterization
`XYl RGB Conversion Matrices
`Intensity RGB value Conversion
`Conclusion
`
`661
`662
`662
`664
`664
`664
`665
`666
`666
`666
`667
`667
`669
`670
`671
`673
`674
`675
`677
`
`PART IV. X LOGICAL FONT DESCRIPTION CONVENTIONS
`
`679
`
`1.
`2.
`2.1
`2.2
`2.3
`2.4
`
`2.5
`2.6
`3.
`
`Introduction
`
`Requirements and Goals
`Provide Unique and Descriptive Font Names
`Support Multiple Font Vendors and Character Sets
`Support Scalable Fonts
`
`681
`682
`682
`682
`683
`
`Be Independent of X Server and Operating or File System
`683
`Implementations
`Support Arbitrarily Complex Font Matching and Substitution 683
`683
`Be Extensible
`683
`X Logical Font Description
`
`GOOGLE EXHIBIT 1027
`
`Page 20 of 61
`
`
`
`Contents
`
`3.1
`3.1.1
`3.1.2
`3.1.2.1
`3.1.2.2
`3.1.2.3
`3.1.2.4
`3.1.2.5
`3.1.2.6
`3.1.2.7
`3.1.2.8
`3.1.2.9
`3.1.2.10
`3.1.2.11
`3.1.2.12
`3.1.3
`3.2
`3.2.1
`3.2.2
`3.2.3
`3.2.4
`3.2.5
`3.2.6
`3.2.7
`3.2.8
`3.2.9
`3.2.10
`3.2.11
`3.2.12
`3.2.13
`3.2.14
`3.2.15
`
`FontName
`
`FontName Syntax
`
`FontName Field Definitions
`FOUNDRY Field
`FAMILY_NAME Field
`WEIGHT _NAME Field
`
`SlANTField
`SETWIDTH_NAME Field
`ADD_STYLE_NAME Field
`PIXEL_SIZE Field
`
`POINT_SIZE Field
`
`RESOLUTION_X and RESOLUTION_YFields
`SPACING Field
`AVERAGE_ WIDTH Field
`CHARSET _REGISTRY and CHARSET _ENCODING Fields
`
`Examples
`Font Properties
`FOUNDRY
`
`FAMILY_NAME
`
`WEIGHT_NAME
`Sl.ANT
`SETWIDTH_NAME
`ADD_STYLE_NAME
`
`PIXEL_SIZE
`POINT_SIZE
`RESOLUTION_X
`RESOLUTION_Y
`
`SPACING
`
`AVERAGE_ WIDTH
`CHARSET_REGISTRY
`CHARSET_ENCODING
`
`MIN_SPACE
`
`xix
`
`684
`684
`685
`686
`686
`687
`687
`688
`688
`689
`689
`689
`690
`691
`691
`692
`693
`695
`695
`695
`695
`695
`696
`696
`696
`697
`697
`697
`697
`698
`698
`698
`
`GOOGLE EXHIBIT 1027
`
`Page 21 of 61
`
`
`
`xx
`
`X WINDOW SYSTEM
`
`3.2.16
`3.2.17
`3.2.18
`
`3.2.19
`
`3.2.20
`3.2.21
`3.2.22
`3.2.23
`
`3.2.24
`3.2.25
`3.2.26
`3.2,27
`
`3.2.28
`
`3.2.29
`
`3.2.30
`3.2.31
`3.2.32
`
`3.2.33
`
`3.2.34
`3.2.35
`3.2.36
`3.2.37
`
`3.2.38
`
`3.2.39
`3.2.40
`3.2.41
`
`3.2.42
`3.2.43
`3.2.44
`3.3
`
`4.
`
`5.
`
`NORM_SPACE
`MAX_SPACE
`END_SPACE
`
`AVG_CAPITAL_ WIDTH
`
`AVG_LOWERCASE_ WIDTH
`QUAD_WIDTH
`FIGURE_ WIDTH
`
`SUPERSCRIPT _X
`SUPERSCRIPT _y
`SUBSCRIPT _X
`SUBSCRIPT_ Y
`SUPERSCRIPT_SIZE
`
`SUBSCRIPT_SIZE
`
`SMALL_CAP _SIZE
`UNDERLINE_pOSITION
`UNDERLINE_ THICKNESS
`STRIKEOUT _ASCENT
`
`STRIKEOUT _DESCENT
`
`ITALIC_ANGLE
`CAP_HEIGHT
`X_HEIGHT
`
`RELATIVE_SETWIDTH
`
`RELATIVE_ WEIGHT
`
`WEIGHT
`RESOLUTION
`FACE_NAME
`
`COPYRIGHT
`NOTICE
`DESTINATION
`Built-in Font Property Atoms
`
`Scalable Fonts
`
`Affected Elements of Xlib and the X Protocol
`
`698
`698
`
`699
`
`699
`699
`700
`700
`
`700
`
`701
`701
`701
`
`702
`
`702
`
`702
`703
`703
`
`703
`
`704
`
`704
`704
`705
`
`705
`
`706
`707
`707
`708
`
`708
`708
`709
`709
`
`710
`
`712
`
`GOOGLE EXHIBIT 1027
`
`Page 22 of 61
`
`
`
`Contents
`
`6.
`
`6.1
`6.2
`6.2.1
`6.2.2
`6.2.3
`
`BDF Conformance
`
`XLFD Conformance Requirements
`FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR
`FONT_ASCENT
`FONT _DESCENT
`DEFAULT_CHAR
`
`Appendix A. Xlib Functions and Protocol Requests
`
`Appendix B. X Font Cursors
`
`Appendix C. Extensions
`Basic Protocol Support Routines
`Hooking into Xlib
`Hooks into the Library
`Hooks onto Xlib Data Structures
`GC Caching
`Graphics Batching
`Writing Extension Stubs
`Requests, Replies, and Xproto.h
`Request Format
`Starting to Write a Stub Routine
`Locking Data Structures
`
`Sending the Protocol Request and Arguments
`Variable Length Arguments
`Replies
`Synchronous Calling
`Allocating and Deallocating Memory
`
`Portability Considerations
`Deriving the Correct Extension Opcode
`
`xxi
`
`712
`
`713
`713
`713
`714
`714
`
`715
`
`729
`
`732
`732
`734
`735
`743
`745
`746
`748
`748
`748
`751
`751
`
`752
`753
`754
`757
`757
`758
`758
`
`GOOGLE EXHIBIT 1027
`
`Page 23 of 61
`
`
`
`XXll
`
`X WINDOW SYSTEM
`
`Appendix D. Compatibility Functions
`X Version 11 Compatibility Functions
`Setting Standard Properties
`
`Setting and Getting Window Sizing Hints
`Getting and Setting an XStandardColormap Structure
`Parsing Window Geometry
`Obtaining the X Environment Defaults
`X Version 10 Compatibility Functions
`Drawing and Filling Polygons and Curves
`Associating User Data with a Value
`
`Appendix E. KEYSYM Encoding
`
`Appendix F. Protocol Encoding
`Syntactic Conventions
`Common Types
`Errors
`
`Keyboards
`Pointers
`Predefined Atoms
`Connection Setup
`
`Requests
`Events
`
`Appendix G. X Consortium Standard Character Set Names
`Font Names
`
`Appendix H. Bitmap Distribution Format
`File Format
`Metric Information
`An Example File
`
`760
`760
`760
`
`761
`764
`765
`767
`768
`768
`770
`
`773
`
`808
`808
`811
`815
`
`819
`819
`820
`821
`
`824
`870
`
`882
`882
`
`883
`883
`885
`
`887
`
`GOOGLE EXHIBIT 1027
`
`Page 24 of 61
`
`
`
`Contents
`
`Appendix I. Compound Text Encoding
`Values
`Control Characters
`Standard Character Set Encodings
`Approved Standard Encodings
`
`Nonstandard Character Set Encodings
`Directionality
`Resources
`Font Names
`
`Extensions
`Errors
`
`Glossary
`
`Index
`
`xxiii
`
`889
`889
`890
`891
`892
`893
`894
`895
`895
`896
`897
`
`898
`
`915
`
`GOOGLE EXHIBIT 1027
`
`Page 25 of 61
`
`
`
`xxiv
`
`Acknowledgments
`
`X Window System, Version 11
`
`The design and implementation of the first ten versions of X were primarily
`the work of three individuals: Robert Scheifler of the MIT Laboratory for Com(cid:173)
`puter Science andjim Gettys of Digital Equipment Corporation and Ron New(cid:173)
`man of MIT, both at MIT Project Athena. X version 11, however, is the result of
`the efforts of dozens of individuals at almost as many locations and organiza(cid:173)
`tions. At the risk of offending some of the players by exclusion, we would like
`to acknowledge some of the people who deserve special credit and recognition
`for their work on Xlib. Our apologies to anyone inadvertently overlooked.
`
`Xlib - C Library X Interface
`Release 1
`Our thanks goes to Ron Newman (MIT Project Athena), who contributed sub(cid:173)
`stantially to the design and implementation of the Version 11 Xlib interface.
`Our thanks also goes to Ralph Swick (Project Athena and Digital) who kept
`it all together for us during the early releases. He handled literally thousands
`of requests from people everywhere and saved the sanity of at least one of us.
`His calm good cheer was a foundation on which we could build.
`Our thanks also goes to Todd Brunhoff (Tektronix) who was "loaned" to
`Project Athena at exactly the right moment to provide very capable and much(cid:173)
`needed assistance during the alpha and beta releases. He was responsible for
`the successful integration of sources from multiple sites; we would not have
`had a release without him.
`
`GOOGLE EXHIBIT 1027
`
`Page 26 of 61
`
`
`
`Acknowl,edgments
`
`XXV
`
`Our thanks also goes to Al Mento and Al Wojtas of Digital's ULTRIX Docu(cid:173)
`mentation Group. With good humor and cheer, they took a rough draft and
`made it an infinitely better and more useful document. The work they have
`done will help many everywhere. We also would like to thank Hal Murray
`(Digital SRC) and Peter George (Digital VMS) who contributed much by
`proofreading the early drafts of this document.
`Our thanks also goes to Jeff Dike (Digital UEG), Tom Benson, Jackie
`Granfield, and Vince Orgovan (Digital VMS) who helped with the library utili(cid:173)
`ties implementation; to Hania Gajewska (Digital UEG-WSL) who, along with
`Ellis Cohen (CMU and Siemens), was instrumental in the semantic design of
`the window manager properties; and to Dave Rosenthal (Sun Microsystems)
`who also contributed to the protocol and provided the sample generic color
`frame buffer device-dependent code.
`The alpha and beta test participants deserve special recognition and thanks
`as well. It is significant that the bug reports (and many fixes) during alpha and
`beta test came almost exclusively from just a few of the alpha testers, mostly
`hardware vendors working on product implementations of X. The continued
`public contribution of vendors and universities is certainly to the benefit of the
`entire X community.
`Special thanks must go to Sam Fuller, Vice-President of Corporate Research
`at Digital, who has remained committed to the widest public availability of X
`and who made it possible to greatly supplement MIT's resources with the Digi(cid:173)
`tal staff in order to make version 11 a reality. Many of the people mentioned
`here are part of the Western Software Laboratory (Digital UEG-WSL) of the
`ULTRIX Engineering Group and work for Smokey Wallace, who has been vital
`to the project's success. Others not mentioned here worked on the toolkit and
`are acknowledged in the X Toolkit documentation.
`Of course, we must particularly thank Paul Asente, formerly of Stanford
`University and now of Digital UEG-WSL, who wrote W, the predecessor to X,
`and Brian Reid, formerly of Stanford University and now of Digital WRL, who
`had much to do with W's design.
`Finally, our thanks goes to MIT, Digital Equipment Corporation, and IBM
`for providing the environment where it could happen.
`
`GOOGLE EXHIBIT 1027
`
`Page 27 of 61
`
`
`
`xxvi
`
`X WINDOW SYSTEM
`
`Release4
`Our thanks go to Jim Fulton (MIT X Consortium) for designing and specifying
`the new Xlib functions for Inter-Client Communication Conventions (ICCCM)
`support.
`We also thank Al Mento of Digital for his continued effort in maintaining
`this document and Jim Fulton and Donna Converse (MIT X Consortium) for
`their much-appreciated efforts in reviewing the changes.
`
`Releases
`The principal authors of the Input Method facilities are VaniaJoloboff (OSF)
`and Bill McMahon (HP). The principal author of the rest of the internationali(cid:173)
`zation facilities is Glenn Widener (Tektronix). Our thanks to them for keep(cid:173)
`ing their sense of humor through a long and sometimes difficult design pro(cid:173)
`cess. Although the words and much of the design are due to them, many oth(cid:173)
`ers have contributed substantially to the design and implementation. Tom
`McFarland (HP) and Frank Rojas (IBM) deserve particular recognition for
`their contributions. Other contributors were Tim Anderson (Motorola), Alka
`Badshah (OSF), Gabe Beged-Dov (HP), Chih-Chung Ko (III), Vera Cheng
`(III), Michael Collins (Digital), Walt Daniels (IBM), Noritoshi Demizu
`(OMRON), Keisuke Fukui (Fujitsu), Hitoshoi Fukumoto (Nihon Sun), Tim
`Greenwood (Digital), John Harvey (IBM), Fred Horman (AT&T), Norikazu
`Kaiya (Fujitsu), Yuji Kamala (IBM), Yutaka Kataoka (Waseda University),
`Ranee Khubchandani
`(Sun), Akari Kon
`(NEC), Hiroshi Kuribayashi
`(OMRON), Teruhiko Kurosaka (Sun), Seiji Kuwari (OMRON), Sandra Martin
`(OSF), Masato Morisaki (NTT), Nelson Ng (Sun), Takashi Nishimura (NTT
`America), Makato Nishino (IBM), Akira Ohsone (Nihon Sun), Chris Peterson
`(MIT), Sam Shteingart (AT&T), Manish Sheth (AT&T), Muneiyoshi Suzuki
`(NTT), Cori Mehring (Digital), Shoji Sugiyama (IBM), and Eiji Tosa (IBM).
`We are deeply indebted to Tatsuya Kato (NTT), Hiroshi Kuribayashi
`(OMRON), Seiji Kuwari (OMRON), Muneiyoshi Suzuki (NTT), and Li
`Yuhong (OMRON) for producing the first complete sample implementation
`of the internationalization facilities. We are also very much indebted to Masato
`Morisaki (NTT) for coordinating the integration, testing, and release of this
`implementation. We also thank Michael Collins for his design of the pluggable
`layer inside Xlib.
`
`GOOGLE EXHIBIT 1027
`
`Page 28 of 61
`
`
`
`Acknowkdgments
`
`xxvii
`
`The principal authors (design and implementation) of the Xcms color
`management facilities are Al Tabayoyon (Tektronix) and Chuck Adams (Tek(cid:173)
`tronix).joann Taylor (Tektronix), Bob Toole (Tektronix), and Keith Packard
`(MIT X Consortium) also contributed significantly to the design. Others who
`contributed are Harold Boll (Kodak), Ken Bronstein (HP), Nancy Cam (SGI),
`Donna Converse (MIT X Consortium), Elias Israel (ISC), Deron Johnson
`(Sun), Jim King (Adobe), Ricardo Motta (HP), Keith Packard (MIT), Chuck
`Peek (IBM), Wil Plouffe (IBM), Dave Stemlicht (MIT X Consortium), Kumar
`Talluri (AT&T), and Richard Verberg (IBM).
`We also once again thank Al Mento of Digital for his work in formatting and
`reformatting text for this manual and for producing manpages. Thanks also to
`Clive Feather (IXI) for proofreading and finding a number of small errors.
`
`X Window System Protocol
`The primary contributers to the XI I protocol are Dave Carver (Digital HPW),
`Branko Gerovac (Digital HPW),Jim Gettys (MIT /Project Athena, Digital), Phil
`Karlton (Digital WSL), Scott McGregor (Digital SSG), Ram Rao (Digital UEG),
`David Rosenthal (Sun), and Dave Winchell (Digital UEG).
`The implementors of initial server who provided useful input are Susan
`Angebranndt (Digital), Raymond Drewry (Digital), and Todd Newman (Digi(cid:173)
`tal).
`The invited reviewers who provided useful input are Andrew Cherenson
`(Berkeley), Bums Fisher (Digital), Dan Garfinkel (HP), Leo Hourvitz (Next),
`Brock Krizan (H