11unit Olf.FMX.Effects;
2+
23interface
4+
35uses
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+
59type
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+
5466procedure Register ;
67+
5568implementation
69+
5670procedure Register ;
5771begin
5872 RegisterComponents(' OlfSoftware' , [TOlfFlipHorizontalEffect,
59- TOlfFlipVerticalEffect,TOlfRotateEffect]);
73+ TOlfFlipVerticalEffect, TOlfRotateEffect]);
6074end ;
75+
6176{ TOlfFlipHorizontalEffect }
6277constructor TOlfFlipHorizontalEffect.Create(AOwner: TComponent);
6378begin
6479 inherited ;
6580 FEffectStyle := [TEffectStyle.DisablePaint];
6681end ;
82+
6783procedure TOlfFlipHorizontalEffect.ProcessEffect (const Canvas: TCanvas;
6884 const Visual: TBitmap; const Data: Single);
6985begin
7086 inherited ;
7187 Visual.FlipHorizontal;
7288end ;
89+
7390{ TOlfFlipVerticalEffect }
7491constructor TOlfFlipVerticalEffect.Create(AOwner: TComponent);
7592begin
7693 inherited ;
7794 FEffectStyle := [TEffectStyle.DisablePaint];
7895end ;
96+
7997procedure TOlfFlipVerticalEffect.ProcessEffect (const Canvas: TCanvas;
8098 const Visual: TBitmap; const Data: Single);
8199begin
@@ -87,11 +105,11 @@ procedure TOlfFlipVerticalEffect.ProcessEffect(const Canvas: TCanvas;
87105function TOlfRotateEffect.CanObserve (const ID: Integer): Boolean;
88106begin
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 ;
95113end ;
96114
97115constructor TOlfRotateEffect.Create(AOwner: TComponent);
@@ -103,22 +121,22 @@ constructor TOlfRotateEffect.Create(AOwner: TComponent);
103121procedure TOlfRotateEffect.ObserverAdded (const ID: Integer;
104122 const Observer: IObserver);
105123begin
106- if ID = TObserverMapping.EditLinkID then
107- Observer.OnObserverToggle := ObserverToggle;
124+ if ID = TObserverMapping.EditLinkID then
125+ Observer.OnObserverToggle := ObserverToggle;
108126end ;
109127
110128procedure TOlfRotateEffect.ObserverToggle (const AObserver: IObserver;
111129 const Value : Boolean);
112130var
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;
122140end ;
123141
124142procedure TOlfRotateEffect.ProcessEffect (const Canvas: TCanvas;
@@ -130,19 +148,23 @@ procedure TOlfRotateEffect.ProcessEffect(const Canvas: TCanvas;
130148
131149procedure TOlfRotateEffect.SetRotation (const Value : Single);
132150begin
133- if value <> FRotation then
151+ if Value <> FRotation then
134152 begin
135- FRotation := Value ;
136- UpdateParentEffects;
153+ FRotation := Value ;
154+ UpdateParentEffects;
137155 end ;
138156end ;
139157
140158initialization
141- RegisterFmxClasses([TOlfFlipHorizontalEffect, TOlfFlipVerticalEffect, TOlfRotateEffect ]);
159+
160+ RegisterFmxClasses([TOlfFlipHorizontalEffect,
161+ TOlfFlipVerticalEffect, TOlfRotateEffect]);
142162Data.Bind.Components.RegisterValuePropertyName
143- (TArray<TClass>.create (TOlfRotateEffect), ' Rotation' , ' FMX' );
163+ (TArray<TClass>.Create (TOlfRotateEffect), ' Rotation' , ' FMX' );
144164
145165finalization
166+
146167Data.Bind.Components.UnregisterValuePropertyName
147- (TArray<TClass>.create(TOlfRotateEffect));
168+ (TArray<TClass>.Create(TOlfRotateEffect));
169+
148170end .
0 commit comments