Common Lisp Interface Manager 2.0 User's Guide > Chapter 2 Drawing Graphics > 2.5 General Geometric Objects in CLIM

A *
point*
is a mathematical point in the drawing plane that is identified by its coordinates, a pair of real numbers. Points have neither area nor length. Note that a point is not the same thing as a pixel; CLIM's model of the drawing plane has continuous coordinates.

You can create point objects and use them as arguments to the drawing functions. Alternatively, you can use the *
spread*
versions of the drawing functions, that is, the drawing functions with stars appended to their names. For example, instead of
draw-point
, use
draw-point*
, which takes two arguments specifying a point by its coordinates. (Note that, for performance reasons, we generally recommend the use of the spread versions.)

The operations for creating and dealing with points are:

point [Protocol Class]

Summary: The protocol class that corresponds to a mathematical point. This is a subclass of region and bounding-rectangle . If you want to create a new class that behaves like a point, it should be a subclass of point . Subclasses of point obey the point protocol.

pointp [Function]

Summary: Returns
t
if *
object*
is a point; otherwise, it returns
nil
.

Summary: An instantiable class that implements a point. This is a subclass of point . This is the class that make-point instantiates. Members of this class are immutable.

make-point [Function]

Summary: Returns an object of class
standard-point
whose coordinates are *
x*
and *
y*
. *
x*
and *
y*
must be real numbers.

The following generic functions comprise the point Application Programmer Interface. Only point-position is in the point protocol; that is, all classes that are subclasses of point must implement methods for point-position , but need not implement methods for point-x and point-y .

point-position [Generic Function]

Summary: Returns both the *
x*
and *
y*
coordinates of the point *
point*
as two values.

Summary: Returns the *
x*
or *
y*
coordinate of the point *
point*
, respectively. CLIM will supply default methods for
point-x
and
point-y
on the protocol class
point
that are implemented by calling
point-position
.

Common Lisp Interface Manager 2.0 User's Guide - 22 Dec 2009