49 lines
1.1 KiB
Plaintext
49 lines
1.1 KiB
Plaintext
MODULE Bitmap;
|
|
|
|
PROCEDURE NewImage(height, width: UByte): T RAISES {BadImage} =
|
|
(* To make things easier, limit image size to also
|
|
be UByte (0 to 255), and to have equal dimensions. *)
|
|
BEGIN
|
|
IF height # width THEN
|
|
RAISE BadImage;
|
|
END;
|
|
RETURN NEW(T, height, width);
|
|
END NewImage;
|
|
|
|
PROCEDURE Fill(VAR pic: T; color: Pixel) =
|
|
BEGIN
|
|
FOR i := FIRST(pic^) TO LAST(pic^) DO
|
|
FOR j := FIRST(pic[0]) TO LAST(pic[0]) DO
|
|
pic[i,j] := color;
|
|
END;
|
|
END;
|
|
END Fill;
|
|
|
|
PROCEDURE GetPixel(VAR pic: T; point: Point): Pixel RAISES {BadColor} =
|
|
VAR pixel := pic[point.x, point.y];
|
|
BEGIN
|
|
IF pixel = White THEN
|
|
RETURN White;
|
|
ELSIF pixel = Black THEN
|
|
RETURN Black;
|
|
ELSIF pixel = Red THEN
|
|
RETURN Red;
|
|
ELSIF pixel = Green THEN
|
|
RETURN Green;
|
|
ELSIF pixel = Blue THEN
|
|
RETURN Blue;
|
|
ELSIF pixel = Yellow THEN
|
|
RETURN Yellow;
|
|
ELSE
|
|
RAISE BadColor;
|
|
END;
|
|
END GetPixel;
|
|
|
|
PROCEDURE SetPixel(VAR pic: T; point: Point; color: Pixel) =
|
|
BEGIN
|
|
pic[point.x, point.y] := color;
|
|
END SetPixel;
|
|
|
|
BEGIN
|
|
END Bitmap.
|