throbber
X WINDOW SYS-EM
`
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket