


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


