Skip to content

Commit 61c11f1

Browse files
added TOlfLiveBindedEffect as ancestor for effects with LiveBindings
1 parent fb70666 commit 61c11f1

File tree

1 file changed

+49
-27
lines changed

1 file changed

+49
-27
lines changed

sources/Olf.FMX.Effects.pas

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
11
unit Olf.FMX.Effects;
2+
23
interface
4+
35
uses
4-
System.SysUtils, System.Classes, FMX.Types, FMX.Effects, FMX.Graphics, FMX.Bind.Editors, Data.Bind.Components;
6+
System.SysUtils, System.Classes, FMX.Types, FMX.Effects, FMX.Graphics,
7+
FMX.Bind.Editors, Data.Bind.Components;
8+
59
type
10+
/// <summary>
11+
/// To activate visual LiveBindings on inherited components.
12+
/// </summary>
13+
TOlfLiveBindedEffect = class(TEffect)
14+
end;
15+
616
[ComponentPlatformsAttribute(pfidWindows or pfidOSX or pfidLinux or
717
pfidAndroid or pfidiOS)]
818
TOlfFlipHorizontalEffect = class(TEffect)
@@ -33,49 +43,57 @@ TOlfFlipVerticalEffect = class(TEffect)
3343

3444
[ComponentPlatformsAttribute(pfidWindows or pfidOSX or pfidLinux or
3545
pfidAndroid or pfidiOS)]
36-
TOlfRotateEffect = class(TEffect)
46+
TOlfRotateEffect = class(TOlfLiveBindedEffect)
3747
private
3848
FRotation: Single;
3949
procedure SetRotation(const Value: Single);
4050
procedure ObserverToggle(const AObserver: IObserver; const Value: Boolean);
41-
protected
51+
protected
4252
{ Déclarations protégées }
4353
function CanObserve(const ID: Integer): Boolean; override;
44-
procedure ObserverAdded(const ID: Integer; const Observer: IObserver); override;
54+
procedure ObserverAdded(const ID: Integer;
55+
const Observer: IObserver); override;
4556
public
4657
constructor Create(AOwner: TComponent); override;
4758
procedure ProcessEffect(const Canvas: TCanvas; const Visual: TBitmap;
4859
const Data: Single); override;
4960
published
5061
property Enabled;
5162
property trigger;
52-
property Rotation : Single read FRotation write SetRotation;
63+
property Rotation: Single read FRotation write SetRotation;
5364
end;
65+
5466
procedure Register;
67+
5568
implementation
69+
5670
procedure Register;
5771
begin
5872
RegisterComponents('OlfSoftware', [TOlfFlipHorizontalEffect,
59-
TOlfFlipVerticalEffect,TOlfRotateEffect]);
73+
TOlfFlipVerticalEffect, TOlfRotateEffect]);
6074
end;
75+
6176
{ TOlfFlipHorizontalEffect }
6277
constructor TOlfFlipHorizontalEffect.Create(AOwner: TComponent);
6378
begin
6479
inherited;
6580
FEffectStyle := [TEffectStyle.DisablePaint];
6681
end;
82+
6783
procedure TOlfFlipHorizontalEffect.ProcessEffect(const Canvas: TCanvas;
6884
const Visual: TBitmap; const Data: Single);
6985
begin
7086
inherited;
7187
Visual.FlipHorizontal;
7288
end;
89+
7390
{ TOlfFlipVerticalEffect }
7491
constructor TOlfFlipVerticalEffect.Create(AOwner: TComponent);
7592
begin
7693
inherited;
7794
FEffectStyle := [TEffectStyle.DisablePaint];
7895
end;
96+
7997
procedure TOlfFlipVerticalEffect.ProcessEffect(const Canvas: TCanvas;
8098
const Visual: TBitmap; const Data: Single);
8199
begin
@@ -87,11 +105,11 @@ procedure TOlfFlipVerticalEffect.ProcessEffect(const Canvas: TCanvas;
87105
function TOlfRotateEffect.CanObserve(const ID: Integer): Boolean;
88106
begin
89107
case ID of
90-
TObserverMapping.EditLinkID, TObserverMapping.ControlValueID:
91-
Result := True;
92-
else
93-
Result := False;
94-
end;
108+
TObserverMapping.EditLinkID, TObserverMapping.ControlValueID:
109+
Result := True;
110+
else
111+
Result := False;
112+
end;
95113
end;
96114

97115
constructor TOlfRotateEffect.Create(AOwner: TComponent);
@@ -103,22 +121,22 @@ constructor TOlfRotateEffect.Create(AOwner: TComponent);
103121
procedure TOlfRotateEffect.ObserverAdded(const ID: Integer;
104122
const Observer: IObserver);
105123
begin
106-
if ID = TObserverMapping.EditLinkID then
107-
Observer.OnObserverToggle := ObserverToggle;
124+
if ID = TObserverMapping.EditLinkID then
125+
Observer.OnObserverToggle := ObserverToggle;
108126
end;
109127

110128
procedure TOlfRotateEffect.ObserverToggle(const AObserver: IObserver;
111129
const Value: Boolean);
112130
var
113-
LEditLinkObserver: IEditLinkObserver;
131+
LEditLinkObserver: IEditLinkObserver;
132+
begin
133+
if Value then
114134
begin
115-
if Value then
116-
begin
117-
if Supports(AObserver, IEditLinkObserver, LEditLinkObserver) then
118-
Enabled := not LEditLinkObserver.IsReadOnly;
119-
end
120-
else
121-
Enabled := True;
135+
if Supports(AObserver, IEditLinkObserver, LEditLinkObserver) then
136+
Enabled := not LEditLinkObserver.IsReadOnly;
137+
end
138+
else
139+
Enabled := True;
122140
end;
123141

124142
procedure TOlfRotateEffect.ProcessEffect(const Canvas: TCanvas;
@@ -130,19 +148,23 @@ procedure TOlfRotateEffect.ProcessEffect(const Canvas: TCanvas;
130148

131149
procedure TOlfRotateEffect.SetRotation(const Value: Single);
132150
begin
133-
if value<>FRotation then
151+
if Value <> FRotation then
134152
begin
135-
FRotation := Value;
136-
UpdateParentEffects;
153+
FRotation := Value;
154+
UpdateParentEffects;
137155
end;
138156
end;
139157

140158
initialization
141-
RegisterFmxClasses([TOlfFlipHorizontalEffect, TOlfFlipVerticalEffect, TOlfRotateEffect ]);
159+
160+
RegisterFmxClasses([TOlfFlipHorizontalEffect,
161+
TOlfFlipVerticalEffect, TOlfRotateEffect]);
142162
Data.Bind.Components.RegisterValuePropertyName
143-
(TArray<TClass>.create(TOlfRotateEffect), 'Rotation', 'FMX');
163+
(TArray<TClass>.Create(TOlfRotateEffect), 'Rotation', 'FMX');
144164

145165
finalization
166+
146167
Data.Bind.Components.UnregisterValuePropertyName
147-
(TArray<TClass>.create(TOlfRotateEffect));
168+
(TArray<TClass>.Create(TOlfRotateEffect));
169+
148170
end.

0 commit comments

Comments
 (0)