Unit GDriver;
interface
uses GEvents, GMain;
type
Event = record
what : GEvent;
info : Int;
end;
procedure Get_Event( var ev : Event );
function Driver_Set_Graphics( mode : Int ) : boolean;
function Driver_Restore_Mode : boolean;
procedure Driver_Display_Bitmap( var buff; line, col : Int );
implementation
uses Os2Base, CRT;
uses CRT;
type
Translator = record
key : char;
ev_class : GEvent;
ev_info : Int;
end;
const
Num_Translators = 15;
Translators : array[1..Num_Translators] of Translator
= (
(key:#27; ev_class:event_Quit ; ev_info:0),
(key:'x'; ev_class: event_Rotate_Glyph; ev_info: -1),
(key:'c'; ev_class: event_Rotate_Glyph; ev_info: 1),
(key:'v'; ev_class: event_Rotate_Glyph; ev_info: -16),
(key:'b'; ev_class: event_Rotate_Glyph; ev_info: 16),
(key:'9'; ev_class: event_Change_Glyph; ev_info:-100),
(key:'0'; ev_class: event_Change_Glyph; ev_info: 100),
(key:'i'; ev_class: event_Change_Glyph; ev_info: -10),
(key:'o'; ev_class: event_Change_Glyph; ev_info: 10),
(key:'k'; ev_class: event_Change_Glyph; ev_info: -1),
(key:'l'; ev_class: event_Change_Glyph; ev_info: 1),
(key:'+'; ev_class: event_Scale_Glyph; ev_info: 10),
(key:'-'; ev_class: event_Scale_Glyph; ev_info: -10),
(key:'u'; ev_class: event_Scale_Glyph; ev_info: 1),
(key:'j'; ev_class: event_Scale_Glyph; ev_info: -1)
);
procedure Get_Event( var ev : Event );
var
i : Int;
c : char;
begin
c := ReadKey;
for i := 1 to Num_Translators do
begin
if c = translators[i].key then
begin
ev.what := translators[i].ev_class;
ev.info := translators[i].ev_info;
exit;
end;
end;
ev.what := event_Keyboard;
ev.info := Int(c);
end;
end.