%% EDWIN Graphics interface for Prolog %% 

%% Initialisation %%

initialise_edwin_for(Device) :- call_edwin(0, Device).
initialise_edwin :- call_edwin(1).
edwin_initialised :- call_edwin(33).

viewport(XL, YB, XR, YT) :- call_edwin(2, XL, YB, XR, YT).
window(XL, YB, XR, YT) :- call_edwin(3, XL, YB, XR, YT).

%% Drawing Things %%

newframe :- call_edwin(4).
move_abs(X, Y) :- call_edwin(5, X, Y).
move_rel(X, Y) :- call_edwin(6, X, Y).
line_abs(X, Y) :- call_edwin(7, X, Y).
line_rel(X, Y) :- call_edwin(8, X, Y).
marker_abs(N, X, Y) :- call_edwin(9, N, X, Y).
marker_rel(N, X, Y) :- call_edwin(10, N, X, Y).

%% Attributes %%

set_colour(N) :- call_edwin(11, N).
set_line_style(N) :- call_edwin(12, N).
set_speed(N) :- call_edwin(13, N).
set_shade_mode(N) :- call_edwin(14, N).
set_colour_mode(N) :- call_edwin(34, N).
set_chord_step(N) :- call_edwin(15, N).
drive_dev(Code, X, Y) :- call_edwin(31, Code, X, Y).

%% Shapes %%

rectangle(XL, YB, XR, YT) :- call_edwin(16, XL, YB, XR, YT).
circle(R) :- call_edwin(17, R).
arc(OX, OY, Rad, Start_Ang, End_AnG) :- 
   call_edwin(18, OX, OY, Rad, Start_Ang, End_Ang).
sector(OX, OY, Rad, Start_Ang, End_Ang) :-
   call_edwin(19, OX, OY, Rad, Start_Ang, End_Ang).

%% Text %%

text(A) :- call_edwin(20, A).
textq(A) :- call_edwin(21, A).
set_char_size(Size) :- call_edwin(22, Size).
set_char_rot(Rot) :- call_edwin(23, Rot).
set_char_quality(Qual) :- call_edwin(24, Qual).
set_char_font(Font) :- call_edwin(25, Font).
set_char_slant(Slant) :- call_edwin(26, Slant).

%% Inquiry %%

cursor(Buttons, X, Y) :- call_edwin(27, Buttons, X, Y).
sample_cursor(Buttons, X, Y) :- call_edwin(32, Buttons, X, Y).
inquire_position(X, Y) :- call_edwin(28, X, Y).
inquire_viewport(XL, YB, XR, YT) :- call_edwin(29, XL, YB, XR, YT).
inquire_window(XL, YB, XR, YT) :- call_edwin(30, XL, YB, XR, YT).

%% Termination %%

terminate_edwin :- call_edwin(63).
