

The standard library xgeometry package implements the basic geometry types and operations.
The xgeometry package implements the Xgeometry api.
The xgeometry package source code is in src/lib/std/2d/xgeometry.pkg.
See also: xgeometry_float package.
The above information is manually maintained and may contain errors.
api {
site_to_box : Window_Site -> Box;
valid_arc : Arc -> Bool;
valid_box : Box -> Bool;
valid_line : Line -> Bool;
valid_point : Point -> Bool;
valid_site : Window_Site -> Bool;
valid_size : Size -> Bool;
Arc = ARC {angle1:Int, angle2:Int, col:Int, high:Int,
row:Int, wide:Int};
Box
= BOX {col:Int, high:Int, row:Int, wide:Int};
Line = LINE (Point , Point);
Point = POINT {col:Int, row:Int};
Size = SIZE {high:Int, wide:Int};
Window_Site
= WINDOW_SITE {border_thickness:Int, size:Size, upperleft:Point};
package box : api {
clip_point : (Box , Point) -> Point;
in_box : (Box , Box) -> Bool;
intersect : (Box , Box) -> Bool;
intersection : (Box , Box) -> Box;
lowerright : Box -> Point;
make : (Point , Size) -> Box;
middle : Box -> Point;
rtranslate : (Box , Point) -> Box;
size : Box -> Size;
translate : (Box , Point) -> Box;
union : (Box , Box) -> Box;
upperleft : Box -> Point;
upperleft_and_size : Box -> (Point , Size);
xor : (Box , Box) -> List(Box );
exception INTERSECTION;
};;
package point : api {
add : (Point , Point) -> Point;
add_size : (Point , Size) -> Point;
bounding_box : List(Point ) -> Box;
clip : (Point , Size) -> Point;
col : Point -> Int;
eq : (Point , Point) -> Bool;
ge : (Point , Point) -> Bool;
gt : (Point , Point) -> Bool;
in_box : (Point , Box) -> Bool;
le : (Point , Point) -> Bool;
lt : (Point , Point) -> Bool;
ne : (Point , Point) -> Bool;
row : Point -> Int;
scale : (Point , Int) -> Point;
subtract : (Point , Point) -> Point;
zero : Point;
};;
package size : api {
add : (Size , Size) -> Size;
eq : (Size , Size) -> Bool;
scale : (Size , Int) -> Size;
subtract : (Size , Size) -> Size;
};;
};

