1.6 Data Types

The following are some data type definitions that are commonly used in CLX function definitions.



alist (key-type-and-name datum-type-and-name) 'list Type
        

alist defines an association list. An association list is a sequence, containing zero or more repetitions of the given elements with each of the elements expressed as (type name).



angle `(number ,(* -2pi) ,(* 2pi)) Type
        

angle defines an angle in units of radians and is bounded by (-2%pi;) and (2%pi;). Note that we are explicitly using a different angle representation than what is actually transmitted in the protocol.



arc-seq '(repeat-seq (int16 x) (int16 y) (card16 width) (card16 height) (angle angle1) (angle angle2)) Type
        

arc-seq defines a six-tuple sequence of the form (x, y, width, height, angle1, angle2). The points x and y are signed, 16-bit quantities with a range from -32,768 to 32,767. The width and height values are unsigned, 16-bit quantities and range from 0 to 65,535. angle1 and angle2 are in units of radians, and bounded by (-2%pi;) and (2%pi;).



array-index `(integer 0 ,array-dimension-limit) Type
        

array-index defines a type which is a subtype of the integers and can be used to describe all variables that can be array indices. The range is inclusive because start and end array index specifiers can be one (1) past the end.



bit-gravity '(member gravity*) Type
        

A keyword that specifies which region of a window should be retained when the window is resized.

gravity -- One of the following:

  • :center
  • :north
  • :south
  • :static
  • :east
  • :north-east
  • :south-east :west
  • :forget
  • :north-west
  • :south-west
  • If a window is reconfigured without changing its inside width or height, then the contents of the window moves with the window and are not lost. Otherwise, the contents of a resized window are either moved or lost, depending on its bit-gravity attribute. See window-bit-gravity, in paragrpah 4.3, Window Attributes, for additional information.



    bitmap '(array bit (* *)) Type
            

    Specifies a two-dimensional array of bits.



    bitmap-format Structure
            

    A structure that describes the storage format of a bitmap.

    The bitmap-format structure contains slots for unit, pad, and lsb-first-p. The unit member indicates the unit of increments used to maintain the bitmap data. The units available for use are 8, 16, or 32 bits. The pad member indicates how many bits are needed to pad the left edge of the scan-line. The lsb-first-p member is a predicate which indicates the ordering of bits with the bitmap unit.



    unit Slot of bitmap-format
            

    Type: (member 8 16 32).

    The size of a contiguous grouping of bits, which can be 8, 16, or 32. The default is 8.



    pad Slot of bitmap-format
            

    Type: (member 8 16 32).

    The number of bits to left-pad the scan-line, which can be 8, 16, or 32. The default is 8.



    lsb-first-p Slot of bitmap-format
            

    Type: boolean.

    A predicate indicating whether the least significant bit comes first (true) or not (nil).



    boolean '(or nil (not nil)) Type
            

    boolean defines a type which is all inclusive. It is used for variables that can take on a true (non-nil) or false (nil) value.



    boole-constant `(member value*) Type
            

    boole-constant defines a type that is a set of the values associated with the 16 boolean operation-code constants for the Common Lisp language. It is used for the set of allowed source and destination combination functions in a graphics context.

    value -- One of the following:

  • boole-1
  • boole-c1
  • boole-nand
  • boole-xor
  • boole-2
  • boole-c2
  • boole-nor
  • boole-and
  • boole-clr
  • boole-orc1
  • boole-andc1
  • boole-eqv
  • boole-orc2
  • boole-andc2
  • boole-ior
  • boole-set


  • card8 '(unsigned-byte 8) Type
            

    An unsigned integer value that is a maximum of eight bits long. This gives a number of this type a range from 0 to 255.



    card16 '(unsigned-byte 16) Type
            

    An unsigned integer value that is a maximum of 16 bits long. This gives a number of this type a range from 0 to 65,535.



    card29 '(unsigned-byte 29) Type
            

    An unsigned integer value that is a maximum of 29 bits long. This gives a number of this type a range from 0 to 536,870,911.



    card32 '(unsigned-byte 32) Type
            

    An unsigned integer value that is a maximum of 32 bits long. This gives a number of this type a range from 0 to 4,294,967,295.



    color '(satisfies color-p) Type
            

    A color. See paragrpah 9.2, Color Functions, for additional information.



    colormap '(satisfies colormap-p) Type
            

    A colormap. See paragrpah 9.3, Colormap Functions, for additional information.



    cursor '(satisfies cursor-p) Type
            

    A cursor. See section 10, Cursors, for additional information.



    device-event-mask '(or mask32 (list device-event-mask-class)) Type
            

    Provides a way to specify a set of bits for an event bitmask. Two ways of specifying the bits are allowed: by setting the event bits in a 32 bit mask, or by listing the keyword names of the device related event bits in a list.



    device-event-mask-class '(member event*) Type
            

    A keyword name, for a device related event, that corresponds to a particular bit in an event bitmask. The set of names is a subset of the names in the type event-mask-class.

    event -- One of the following:

  • :button-1-motion
  • :button-motion
  • :button-2-motion
  • :button-press
  • :button-3-motion
  • :key-press
  • :button-4-motion
  • :key-release
  • :button-5-motion
  • :pointer-motion


  • display '(satisfies display-p) Type
            

    A connection to an X server. See section 2, Displays, for additional information.



    drawable '(or window pixmap) Type
            

    Both windows and pixmaps can be used as sources and destinations in graphics operations. windows and pixmaps together are known as drawables. However, an :input-only window cannot be used as a source or destination in a graphics operation.



    draw-direction '(member :left-to-right :right-to-left) Type
            

    Defines a list of rotation directions for drawing arcs and fonts. draw-direction can have the values of :left-to-right or :right-to-left.



    error-key '(member error*) Type
            

    Defines a list of all predefined errors. All errors (synchronous and asynchronous) are processed by calling an error handler in the display. The handler is called with the display as the first argument and the error-key as its second argument.

    error -- One of the following:

  • :access
  • :drawable
  • :implementation
  • :value
  • :alloc
  • :font
  • :length
  • :window
  • :atom
  • :gcontext
  • :match
  • :colormap
  • :id-choice
  • :name
  • :cursor
  • :illegal-request
  • :pixmap


  • event-key '(member event-type*) Type
            

    Defines a list that specifies all predefined event-types. Clients are informed of information asynchronously by means of events. These events can be either asynchronously generated from devices or generated as side effects of client requests.

    event-type -- One of the following:

  • :button-press
  • :exposure
  • :motion-notify
  • :button-release
  • :focus-in
  • :no-exposure
  • :circulate-notify
  • :focus-out
  • :property-notify
  • :circulate-request
  • :graphics-exposure
  • :reparent-notify
  • :client-message
  • :gravity-notify
  • :resize-request
  • :colormap-notify
  • :keymap-notify
  • :selection-clear
  • :configure-notify
  • :key-press
  • :selection-notify
  • :configure-request
  • :key-release
  • :selection-request
  • :create-notify
  • :leave-notify
  • :unmap-notify
  • :destroy-notify
  • :map-notify
  • :visibility-notify
  • :enter-notify
  • :map-request


  • event-mask '(or mask32 (list event-mask-class)) Type
            

    Provides a way to specify a set of bits for an event bitmask. Two ways of specifying the bits are allowed: by setting the event bits in a 32 bit mask, or by listing the keyword names of the event bits in a list.



    event-mask-class '(member event*) Type
            

    The elements of the type event-mask-class are keyword names that correspond to a particular bit in an event bitmask.

    event -- One of the following:

  • :button-1-motion
  • :enter-window
  • :pointer-motion-hint
  • :button-2-motion
  • :exposure
  • :property-change
  • :button-3-motion
  • :focus-change
  • :resize-redirect
  • :button-4-motion
  • :key-press
  • :structure-notify
  • :button-5-motion
  • :key-release
  • :substructure-notify
  • :button-motion
  • :keymap-state
  • :substructure-redirect
  • :button-press
  • :leave-window
  • :visibility-change
  • :button-release
  • :owner-grab-button
  • :colormap-change
  • :pointer-motion


  • make-event-keys event-mask Function
            
    event-mask
    An event mask (type mask32).

    Returns a list of event-mask-class keyword names for the event bits that are set in the specified event mask.



    make-event-mask &rest keys Function
            
    keys
    event-mask-class keywords.

    Constructs an event mask from a set of event-mask-class keyword names.

    event-mask
    Type mask32.


    font '(satisfies font-p) Type
            

    A text font. See section 8, Font and Characters, for additional information.



    fontable '(or stringable font) Type
            

    A fontable is either a font object or the name of one of the fonts in the font database.



    font-props 'list Type
            

    A list that contains alternating keywords and integers.



    gcontext '(satisfies gcontext-p) Type
            

    A graphics context. See section 5, Graphics Contexts, for additional information.



    gcontext-key '(member type*) Type
            

    A list of predefined types for use in gcontext processing. Various information for graphics output is stored in a graphics context (GC or GContext), such as foreground pixel, background pixel, line width, clipping region, and so forth.

    type -- One of the following:

  • :arc-mode
  • :exposures
  • :line-width
  • :background
  • :fill-rule
  • :plane-mask
  • :cap-style :fill-style
  • :stipple
  • :clip-mask
  • :font
  • :subwindow-mode
  • :clip-x
  • :foreground
  • :tile
  • :clip-y
  • :function
  • :ts-x
  • :dash-offset
  • :join-style
  • :ts-y
  • :dashes
  • :line-style


  • grab-status '(member grab-type*) Type
            

    There are two kinds of grabs: active and passive. An active grab occurs when a single client grabs the keyboard and/or pointer explicitly. Clients can also grab a particular keyboard key or pointer button in a window. The grab activates when the key or button is actually pressed, and is called a passive grab. Passive grabs can be very convenient for implementing reliable pop-up menus.

    grab-type -- One of the following:

  • :already-grabbed
  • :frozen
  • :invalid-time
  • :not-viewable
  • :success


  • image-depth '(integer 0 32) Type
            

    Used in determining the depth of a pixmap, window, or image. The value specifies the number of bits deep that a given pixel has within a given pixmap, window, or image.



    index-size '(member :default 8 16) Type
            

    Used to control the element size of the destination buffer given to the translate function when drawing glyphs. If :default is specified, the size is based on the current font, if known; otherwise, 16 is used.



    int8 '(signed-byte 8) Type
            

    A signed integer value that is a maximum of eight bits long. A number of this type can have a range from -128 to 127.



    int16 '(signed-byte 16) Type
            

    A signed integer value that is a maximum of 16 bits long. A number of this type can have a range from -32,768 to 32,767.



    int32 '(signed-byte 32) Type
            

    A signed integer value that is a maximum of 32 bits long. A number of this type can have a range from -2,147,483,648 to 2,147,483,647.



    keysym 'card32 Type
            

    Used as an encoding of a symbol on a keycap on a keyboard. It is an unsigned integer value represented in a maximum of 32 bits long. A keysym type can have a range from 0 to 4,294,967,295.



    mask16 ' card16 Type
            

    A positional bitmask that contains 16 boolean flags.



    mask32 ' card32 Type
            

    A positional bitmask that contains 32 boolean flags.



    modifier-key '(member modifier*) Type
            

    A keyword identifying one of the modifier keys on the keyboard device.

    modifier -- One of the following:

  • :shift
  • :mod-2
  • :lock
  • :mod-3
  • :control
  • :mod-4
  • :mod-1
  • :mod-5


  • modifier-mask '(or (member :any) mask16 (list modifier-key)) Type
            

    A bitmask or list of keywords that specifies a set of modifier keys. The keyword :any is equivalent to any subset of modifier key.



    pixarray '(or (array pixel (* *))
        (array card16 (* *))
    (array card8 (* *))
    (array (unsigned-byte 4) (* *))
    (array bit (* *)))
    Type
            

    Specifies a two-dimensional array of pixels.



    pixel '(unsigned-byte 32) Type
            

    An unsigned integer value that is a maximum of 32 bits long. This gives a pixel type a value range from 0 to 4,294,967,295. Useful values are dependent on the class of colormap being used.



    pixmap '(satisfies pixmap-p) Type
            

    A pixmap. See paragrpah 4.8, Pixmaps, for additional information.



    pixmap-format Structure
            

    A structure that describes the storage format of a pixmap.

    The pixmap-format structure contains slots for depth, bits-per-pixel, and scanline-pad. The depth member indicates the number of bit planes in the pixmap. The bits-per-pixel member indicates the number of bits used to represent a single pixel. For X, a pixel can be 1, 4, 8, 16, 24, or 32 bits wide. As for bitmap-format, the scanline-pad member indicates how many pixels are needed to pad the left edge of the scan-line.



    depth Slot of pixmap-format
            

    Type: image-depth.

    The number of bit planes in the pixmap.



    bits-per-pixel Slot of pixmap-format
            

    Type: (member 1 4 8 16 24 32).

    The number of consecutive bits used to encode a single pixel. The default is 8.



    scanline-pad Slot of pixmap-format
            

    Type: (member 8 16 32).

    The number of bits to left-pad the scan-line, which can be 8, 16, or 32. The default is 8.



    point-seq '(repeat-seq (int16 x) (int16 y)) Type
            

    The point-seq type is used to define sequences of (x,y) pairs of points. The paired values are 16-bit, signed integer quantities. This gives the points in this type a range from -32,768 to 32,767.



    pointer-event-mask '(or mask32 (list pointer-event-mask-class)) Type
            

    Provides a way to specify a set of bits for an event bitmask. Two ways of specifying the bits are allowed: by setting the event bits in a 32 bit mask, or by listing the keyword names of the pointer related event bits in a list.



    pointer-event-mask-class '(member event*) Type
            

    A keyword name, for a pointer related event, that corresponds to a particular bit in an event bitmask. The set of names is a subset of the names in the type event-mask-class.

    event -- One of the following:

  • :button-1-motion
  • :button-motion
  • :leave-window
  • :button-2-motion
  • :button-press
  • :pointer-motion
  • :button-3-motion
  • :button-release
  • :pointer-motion-hint
  • :button-4-motion
  • :enter-window
  • :button-5-motion
  • :keymap-state


  • rect-seq '(repeat-seq (int16 x) (int16 y) (card16 width) (card16 height)) Type
            

    rect-seq defines a four-tuple sequence of the form (xywidthheight). The points x and y are signed, 16-bit quantities with a range from -32,768 to 32,767. The width and height values are unsigned, 16-bit quantities and range from 0 to 65,535.



    repeat-seq (&rest elts) 'sequence Type
            

    A subtype used to define repeating sequences.



    resource-id 'card29 Type
            

    A numeric identifier that is assigned by the server to a server resource object.



    rgb-val '(float 0.0 1.0) Type
            

    An rgb-val is a floating-point value between 0 and 1 that specifies a saturation for a red, green, or blue additive primary. The 0 value indicates no saturation and 1 indicates full saturation.



    screen '(satisfies screen-p) Type
            

    A display screen. See section 3, Screens, for further information.



    seg-seq '(repeat-seq (int16 x1) (int16 y1) (int16 x2) (int16 y2)) Type
            

    Defines sequences of (x1, y1, x2, y2) sets of points. The point values are 16-bit, signed integer quantities. This gives the points in this type a range from -32,768 to 32,767.



    state-mask-key '(or modifier-key (member button*)) Type
            

    A keyword identifying one of the display modifier keys or pointer buttons whose state is reported in device events.

    button -- One of the following:

  • :button-1
  • :button-4
  • :button-2
  • :button-5
  • :button-3


  • make-state-keys state-mask Function
            
    state-mask
    A 16-bit mask of type mask16.
    Returns a list of state-mask-key symbols corresponding to the state-mask. A symbol belongs to the returned list if, and only if, the corresponding state-mask bit is 1.
    state-keywords
    Type list.


    make-state-mask &rest keys Function
            
    keys
    A list of state-mask-key symbols.
    Returns a 16-bit mask representing the given state-mask-key symbols. The returned mask contains a 1 bit for each keyword.
    mask
    Type mask16.


    stringable '(or string symbol) Type
             Used for naming something. This type can be either a string or a symbol whose symbol-name is used as the string containing the name. The case of the characters in the string is ignored when comparing stringables.


    timestamp '(or null card32) Type
             An encoding of a time. nil stands for the current time.


    visual-info Structure
             A structure that represents a visual type. The elements of this structure are id, class, red-mask, green-mask, blue-mask, bits-per-rgb, and colormap-entries.


    id Slot of visual-info
            

    Type: card29.

    A unique identification number.



    class Slot of visual-info
            

    Type: (member :direct-color :gray-scale :pseudo-color :static-color :static-gray :true-color).

    The class of the visual type.



    red-mask, green-mask, blue-mask Slots of visual-info
            

    Type: pixel.

    The red-mask, green-mask, and blue-mask elements are only meaningful for the :direct-color and :true-color classes. Each mask has one contiguous set of bits with no intersections.



    bits-per-rgb Slot of visual-info
            

    Type: card8.

    Specifies the log base 2 of the approximate number of distinct color values ( individually) of red, green, and blue. Actual RGB values are unsigned 16-bit numbers.



    colormap-entries Slot of visual-info
            

    Type: card16.

    Defines the number of available colormap entries in a newly created colormap. For :direct-color and :true-color, this is the size of an individual pixel subfield.



    win-gravity '(member gravity*) Type
            

    A keyword that specifies how to reposition a window when its parent is resized.

    gravity -- One of the following:

  • :center
  • :north-west
  • :static
  • :east
  • :south
  • :unmap
  • :north
  • :south-east
  • :west
  • :north-east
  • :south-west
  • If a parent window is reconfigured without changing its inside width or height, then all child windows move with the parent and are not changed. Otherwise, each child of the resized parent is moved, depending on the child's gravity attribute. See window-gravity, in paragrpah 4.3, Window Attributes, for additional information.



    window '(satisfies window-p) Type
             A window. See section 4, Windows and Pixmaps, for additional information.


    xatom '(or string symbol) Type
             A name that has been assigned a corresponding unique ID by the server. xatoms are used to identify properties, selections, and types defined in the X server. An xatom can be either a string or symbol whose symbol-name is used as the xatom name. The case of the characters in the string are significant when comparing xatoms.