FreeType 1.31.1
This commit is contained in:
123
pascal/test/gdriver.pas
Normal file
123
pascal/test/gdriver.pas
Normal file
@@ -0,0 +1,123 @@
|
||||
(*******************************************************************
|
||||
*
|
||||
* gdriver : Graphics utility driver generic interface 1.1
|
||||
*
|
||||
* Generic interface for all drivers of the graphics utility used
|
||||
* by the FreeType test programs.
|
||||
*
|
||||
* Copyright 1996 David Turner, Robert Wilhelm and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used
|
||||
* modified and distributed under the terms of the FreeType project
|
||||
* license, LICENSE.TXT. By continuing to use, modify or distribute
|
||||
* this file you indicate that you have read the license and
|
||||
* understand and accept it fully.
|
||||
*
|
||||
******************************************************************)
|
||||
|
||||
Unit GDriver;
|
||||
|
||||
interface
|
||||
|
||||
uses GEvents, GMain;
|
||||
|
||||
(* Note that we now support an event based model, even with */
|
||||
/* full-screen modes. It is the responsability of the driver */
|
||||
/* to map its events to the TEvent structure when called */
|
||||
/* through Get_Event *)
|
||||
|
||||
type
|
||||
Event = record
|
||||
what : GEvent; (* event class *)
|
||||
info : Int; (* event parameter *)
|
||||
end;
|
||||
|
||||
(* the event classes are defined in the file 'gevents.h' included *)
|
||||
(* by the test programs, not by the graphics utility *)
|
||||
|
||||
procedure Get_Event( var ev : Event );
|
||||
(* get last event. In full-screen modes, a key-stroke must be */
|
||||
/* translated to an event class with a parameter. *)
|
||||
|
||||
function Driver_Set_Graphics( mode : Int ) : boolean;
|
||||
(* A call to this function must set the graphics mode, the Vio *)
|
||||
(* variable, as well as the values vio_ScanLineWidth, vio_Width *)
|
||||
(* and vio_Height *)
|
||||
|
||||
function Driver_Restore_Mode : boolean;
|
||||
(* Restore previous mode or release display buffer/window *)
|
||||
|
||||
procedure Driver_Display_Bitmap( var buff; line, col : Int );
|
||||
(* Display bitmap on screen *)
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF OS2}
|
||||
|
||||
uses Os2Base, CRT;
|
||||
{$I GDRV_OS2.INC}
|
||||
|
||||
{$ELSE}
|
||||
|
||||
uses CRT;
|
||||
{$I GDRV_DOS.INC}
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
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;
|
||||
|
||||
(* unrecognized keystroke *)
|
||||
|
||||
ev.what := event_Keyboard;
|
||||
ev.info := Int(c);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user