Skip to content

Commit 60addd8

Browse files
committed
Version 1.7.1, Library Update
Updated Volume Popup with more information, Added Audio Mute support, Updated Dependencies Libraries and fixed bug which caused the music to resume on seek
1 parent 1ffda5a commit 60addd8

22 files changed

+3764
-1286
lines changed

Dependencies/Cod.ArrayHelpers.pas

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
{***********************************************************}
2+
{ Codruts Variabile Helpers }
3+
{ }
4+
{ version 0.2 }
5+
{ ALPHA }
6+
{ }
7+
{ }
8+
{ }
9+
{ }
10+
{ }
11+
{ -- WORK IN PROGRESS -- }
12+
{***********************************************************}
13+
14+
{$SCOPEDENUMS ON}
15+
16+
unit Cod.ArrayHelpers;
17+
18+
interface
19+
uses
20+
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, IdHTTP,
21+
VCL.Graphics, Winapi.ActiveX, Winapi.URLMon, IOUtils, System.Generics.Collections,
22+
Cod.ColorUtils, System.Generics.Defaults, Vcl.Imaging.pngimage,
23+
WinApi.GdipObj, WinApi.GdipApi, Win.Registry, Cod.GDI, Cod.Types,
24+
DateUtils;
25+
26+
type
27+
// TArray colection
28+
TArrayUtils<T> = class
29+
public
30+
class function Contains(const x : T; const anArray : array of T) : boolean;
31+
class function GetIndex(const x : T; const anArray : array of T) : integer;
32+
end;
33+
34+
// TArray generic types
35+
TArrayArray = TArray<TArray>;
36+
TArrayArrayHelper = record helper for TArrayArray
37+
public
38+
function Count: integer; overload; inline;
39+
procedure SetToLength(ALength: integer);
40+
end;
41+
42+
TStringArray = TArray<string>;
43+
TStringArrayHelper = record helper for TStringArray
44+
public
45+
function AddValue(Value: string): integer;
46+
procedure Insert(Index: integer; Value: string);
47+
procedure Delete(Index: integer);
48+
function Count: integer; overload; inline;
49+
function Find(Value: string): integer;
50+
procedure SetToLength(ALength: integer);
51+
end;
52+
53+
TIntArray = TArray<integer>;
54+
TIntegerArrayHelper = record helper for TIntArray
55+
public
56+
function AddValue(Value: integer): integer;
57+
procedure Insert(Index: integer; Value: integer);
58+
procedure Delete(Index: integer);
59+
function Count: integer; overload; inline;
60+
function Find(Value: integer): integer;
61+
procedure SetToLength(ALength: integer);
62+
end;
63+
64+
TRealArray = TArray<real>;
65+
TRealArrayHelper = record helper for TRealArray
66+
public
67+
function AddValue(Value: real): integer;
68+
procedure Insert(Index: integer; Value: real);
69+
procedure Delete(Index: integer);
70+
function Count: integer; overload; inline;
71+
function Find(Value: real): integer;
72+
procedure SetToLength(ALength: integer);
73+
end;
74+
75+
implementation
76+
77+
{ TArrayUtils<T> }
78+
79+
class function TArrayUtils<T>.Contains(const x: T; const anArray: array of T): boolean;
80+
var
81+
y : T;
82+
lComparer: IEqualityComparer<T>;
83+
begin
84+
lComparer := TEqualityComparer<T>.Default;
85+
for y in anArray do
86+
begin
87+
if lComparer.Equals(x, y) then
88+
Exit(True);
89+
end;
90+
Exit(False);
91+
end;
92+
93+
class function TArrayUtils<T>.GetIndex(const x : T; const anArray : array of T) : integer;
94+
var
95+
I: Integer;
96+
y: T;
97+
lComparer: IEqualityComparer<T>;
98+
begin
99+
lComparer := TEqualityComparer<T>.Default;
100+
for I := Low(anArray) to High(anArray) do
101+
begin
102+
y := anArray[I];
103+
104+
if lComparer.Equals(x, y) then
105+
Exit(I);
106+
end;
107+
Exit(-1);
108+
end;
109+
110+
// TArray Generic Helpers
111+
function TArrayArrayHelper.Count: integer;
112+
begin
113+
Result := length(Self);
114+
end;
115+
116+
function TStringArrayHelper.Count: integer;
117+
begin
118+
Result := length(Self);
119+
end;
120+
121+
function TIntegerArrayHelper.Count: integer;
122+
begin
123+
Result := length(Self);
124+
end;
125+
126+
function TRealArrayHelper.Count: integer;
127+
begin
128+
Result := length(Self);
129+
end;
130+
131+
procedure TArrayArrayHelper.SetToLength(ALength: integer);
132+
begin
133+
SetLength(Self, ALength);
134+
end;
135+
136+
procedure TStringArrayHelper.SetToLength(ALength: integer);
137+
begin
138+
SetLength(Self, ALength);
139+
end;
140+
141+
procedure TIntegerArrayHelper.SetToLength(ALength: integer);
142+
begin
143+
SetLength(Self, ALength);
144+
end;
145+
146+
procedure TRealArrayHelper.SetToLength(ALength: integer);
147+
begin
148+
SetLength(Self, ALength);
149+
end;
150+
151+
function TStringArrayHelper.AddValue(Value: string): integer;
152+
var
153+
AIndex: integer;
154+
begin
155+
AIndex := Length(Self);
156+
SetLength(Self, AIndex + 1);
157+
Self[AIndex] := Value;
158+
Result := AIndex;
159+
end;
160+
161+
function TIntegerArrayHelper.AddValue(Value: integer): integer;
162+
var
163+
AIndex: integer;
164+
begin
165+
AIndex := Length(Self);
166+
SetLength(Self, AIndex + 1);
167+
Self[AIndex] := Value;
168+
Result := AIndex;
169+
end;
170+
171+
function TRealArrayHelper.AddValue(Value: real): integer;
172+
var
173+
AIndex: integer;
174+
begin
175+
AIndex := Length(Self);
176+
SetLength(Self, AIndex + 1);
177+
Self[AIndex] := Value;
178+
Result := AIndex;
179+
end;
180+
181+
procedure TStringArrayHelper.Insert(Index: integer; Value: string);
182+
var
183+
Size: integer;
184+
I: Integer;
185+
begin
186+
Size := Length(Self);
187+
SetLength(Self, Size+1);
188+
189+
for I := Size downto Index+1 do
190+
Self[I] := Self[I-1];
191+
Self[Index] := Value;
192+
end;
193+
194+
procedure TIntegerArrayHelper.Insert(Index: integer; Value: integer);
195+
var
196+
Size: integer;
197+
I: Integer;
198+
begin
199+
Size := Length(Self);
200+
SetLength(Self, Size+1);
201+
202+
for I := Size downto Index+1 do
203+
Self[I] := Self[I-1];
204+
Self[Index] := Value;
205+
end;
206+
207+
procedure TRealArrayHelper.Insert(Index: integer; Value: real);
208+
var
209+
Size: integer;
210+
I: Integer;
211+
begin
212+
Size := Length(Self);
213+
SetLength(Self, Size+1);
214+
215+
for I := Size downto Index+1 do
216+
Self[I] := Self[I-1];
217+
Self[Index] := Value;
218+
end;
219+
220+
procedure TStringArrayHelper.Delete(Index: integer);
221+
var
222+
I: Integer;
223+
begin
224+
if Index <> -1 then
225+
begin
226+
for I := Index to High(Self)-1 do
227+
Self[I] := Self[I+1];
228+
229+
SetToLength(Length(Self)-1);
230+
end;
231+
end;
232+
233+
procedure TIntegerArrayHelper.Delete(Index: integer);
234+
var
235+
I: Integer;
236+
begin
237+
if Index <> -1 then
238+
begin
239+
for I := Index to High(Self)-1 do
240+
Self[I] := Self[I+1];
241+
242+
SetToLength(Length(Self)-1);
243+
end;
244+
end;
245+
246+
procedure TRealArrayHelper.Delete(Index: integer);
247+
var
248+
I: Integer;
249+
begin
250+
if Index <> -1 then
251+
begin
252+
for I := Index to High(Self)-1 do
253+
Self[I] := Self[I+1];
254+
255+
SetToLength(Length(Self)-1);
256+
end;
257+
end;
258+
259+
function TStringArrayHelper.Find(Value: string): integer;
260+
var
261+
I: integer;
262+
begin
263+
Result := -1;
264+
for I := Low(Self) to High(Self) do
265+
if Self[I] = Value then
266+
Exit(I);
267+
end;
268+
269+
function TIntegerArrayHelper.Find(Value: integer): integer;
270+
var
271+
I: integer;
272+
begin
273+
Result := -1;
274+
for I := Low(Self) to High(Self) do
275+
if Self[I] = Value then
276+
Exit(I);
277+
end;
278+
279+
function TRealArrayHelper.Find(Value: real): integer;
280+
var
281+
I: integer;
282+
begin
283+
Result := -1;
284+
for I := Low(Self) to High(Self) do
285+
if Self[I] = Value then
286+
Exit(I);
287+
end;
288+
289+
end.

Dependencies/Cod.Audio.pas

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
interface
1717
uses
1818
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, IOUtils,
19+
Math,
1920

2021
(* Bass Library *)
2122
Bass;
@@ -108,9 +109,21 @@ TAudioPlayer = class(TObject)
108109
destructor Destroy; override;
109110
end;
110111

112+
// Audio Utilities
113+
function GetSystemVolume: Cardinal;
114+
procedure SetSystemVolume(Value: Cardinal);
115+
111116
implementation
112117

118+
function GetSystemVolume: Cardinal;
119+
begin
120+
Result := Round(Power(BASS_GetVolume, 1 / 1.9) * 100);
121+
end;
113122

123+
procedure SetSystemVolume(Value: Cardinal);
124+
begin
125+
BASS_SetVolume(Value / 100);
126+
end;
114127

115128
{ TAudioPlayer }
116129

@@ -303,7 +316,7 @@ procedure TAudioPlayer.SetPlayStauts(AStatus: TPlayStatus);
303316
begin
304317
case AStatus of
305318
psStopped: BASS_ChannelStop( FStream );
306-
psPlaying: BASS_ChannelPlay( FStream, true );
319+
psPlaying: BASS_ChannelPlay( FStream, false );
307320
psPaused: BASS_ChannelPause( FStream );
308321
end;
309322
end;

0 commit comments

Comments
 (0)