Ignore:
Timestamp:
Oct 4, 2011, 4:12:38 PM (13 years ago)
Author:
george
Message:
  • Added: Base classes for Windows audio using mmsystem unit.
  • Added: Audio system manger class for supported systems management.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • CoolAudio/Systems/UAudioSystem.pas

    r277 r278  
    66
    77uses
    8   Classes, SysUtils;
     8  Classes, SysUtils, Contnrs;
    99
    1010type
     
    2424    property OutputMode: TOutputDriver read FOutputDriver write SetOutputMode;
    2525  end;
     26
     27  TAudioSystemClass = class of TAudioSystem;
    2628
    2729  { TPlayer }
     
    5658  end;
    5759
     60  TPlayerClass = class of TPlayer;
     61
     62  { TAudioSystemManagerItem }
     63
     64  TAudioSystemManagerItem = class
     65    Name: string;
     66    SystemClass: TAudioSystemClass;
     67    PlayerClass: TPlayerClass;
     68  end;
     69
     70  { TAudioSystemManager }
     71
     72  TAudioSystemManager = class
     73    Systems: TObjectList; // TListObject<TAudioSystem>
     74    procedure Register(Name: string; SystemClass: TAudioSystemClass;
     75      PlayerClass: TPlayerClass);
     76    procedure FillStringList(StringList: TStrings);
     77    constructor Create;
     78    destructor Destroy; override;
     79  end;
     80
    5881resourcestring
    5982  SOpenOutputFailed = 'Failed opening audio output';
     
    6184
    6285implementation
     86
     87{ TAudioSystemManagerItem }
     88
     89
     90{ TAudioSystemManager }
     91
     92procedure TAudioSystemManager.FillStringList(StringList: TStrings);
     93var
     94  I: Integer;
     95begin
     96  StringList.Clear;
     97  for I := 0 to Systems.Count - 1 do
     98  with TAudioSystemManagerItem(Systems[I]) do
     99    StringList.AddObject(Name, Systems[I]);
     100end;
     101
     102procedure TAudioSystemManager.Register(Name: string;
     103  SystemClass: TAudioSystemClass; PlayerClass: TPlayerClass);
     104var
     105  NewItem: TAudioSystemManagerItem;
     106begin
     107  NewItem := TAudioSystemManagerItem.Create;
     108  NewItem.Name := Name;
     109  NewItem.SystemClass := SystemClass;
     110  NewItem.PlayerClass := PlayerClass;
     111  Systems.Add(NewItem);
     112end;
     113
     114constructor TAudioSystemManager.Create;
     115begin
     116  Systems := TObjectList.Create;
     117end;
     118
     119destructor TAudioSystemManager.Destroy;
     120begin
     121  Systems.Free;
     122  inherited Destroy;
     123end;
    63124
    64125{ TPlayer }
Note: See TracChangeset for help on using the changeset viewer.