source: branches/Independent/Api.pas

Last change on this file was 68, checked in by chronos, 7 months ago
  • Added: Mouse API support.
File size: 1.6 KB
Line 
1unit Api;
2
3interface
4
5uses
6 Classes, SysUtils, Generics.Collections;
7
8type
9 THandle = NativeInt;
10
11 { THandles }
12
13 THandles = class(TList<THandle>)
14 NewHandle: THandle;
15 function AddNew: THandle;
16 end;
17
18 { TApi }
19
20 TApi = class
21 procedure WriteLine(Text: string); virtual; abstract;
22 procedure RunApp(Name: string); virtual; abstract;
23 procedure Sleep(Time: TDateTime); virtual; abstract;
24 function CreateWindow: THandle; virtual; abstract;
25 procedure SetWindowName(Handle: THandle; Name: string); virtual; abstract;
26 procedure SetWindowRect(Handle: THandle; Rect: TRect); virtual; abstract;
27 procedure SetWindowVisible(Handle: THandle; Visible: Boolean); virtual; abstract;
28 function GetMousePosition: TPoint; virtual; abstract;
29 end;
30
31 TAppContext = class
32 Api: TApi;
33 end;
34
35 { TApp }
36
37 TApp = class
38 Name: string;
39 Terminated: Boolean;
40 procedure Run(Context: TAppContext); virtual; abstract;
41 constructor Create; virtual;
42 end;
43
44 TAppClass = class of TApp;
45
46 { TApps }
47
48 TApps = class(TObjectList<TApp>)
49 function AddNew(AppClass: TAppClass): TApp;
50 function SearchByName(Name: string): TApp;
51 end;
52
53
54implementation
55
56{ THandles }
57
58function THandles.AddNew: THandle;
59begin
60 Result := NewHandle;
61 Inc(NewHandle);
62 Add(Result);
63end;
64
65{ TApp }
66
67constructor TApp.Create;
68begin
69end;
70
71{ TApps }
72
73function TApps.AddNew(AppClass: TAppClass): TApp;
74begin
75 Result := AppClass.Create;
76 Add(Result);
77end;
78
79function TApps.SearchByName(Name: string): TApp;
80var
81 I: Integer;
82begin
83 I := 0;
84 while (I < Count) and (Items[I].Name <> Name) do Inc(I);
85 if I < Count then Result := Items[I]
86 else Result := nil;
87end;
88
89end.
90
Note: See TracBrowser for help on using the repository browser.